
Discopy est une boîte à outils Python pour le calcul avec des diagrammes de chaînes.
Discopy a commencé comme une implémentation de DiscoCAT et QNLP. Cela est maintenant devenu sa propre bibliothèque: Lambeq.
Arrow pour les catégories de poignard gratuites avec des sommes formelles, des opérateurs unaires et des variables symboliques de SympyDiagram pour les diagrammes de cordes planaires dans toute catégorie (pré) monoïdale dans la hiérarchie des langues graphiques (avec des tresses, des rebondissements, des araignées, etc.)Hypergraph pour les diagrammes de cordes dans les catégories hypergraphes et ses restrictions aux catégories symétriques, tracées, compactes et MarkovFunctor dans:Cet exemple est inspiré du billet de blog de Pawel Sobocinski Crema di Mascarpone et du raisonnement schématique.
from discopy . symmetric import Ty as Ingredient , Box as Step , Diagram as Recipe
egg , white , yolk = Ingredient ( "egg" ), Ingredient ( "white" ), Ingredient ( "yolk" )
crack = Step ( "crack" , egg , white @ yolk )
merge = lambda x : Step ( "merge" , x @ x , x )
# DisCoPy allows string diagrams to be defined as Python functions
@ Recipe . from_callable ( egg @ egg , white @ yolk )
def crack_two_eggs ( left_egg , right_egg ):
left_white , left_yolk = crack ( left_egg )
right_white , right_yolk = crack ( right_egg )
return ( merge ( white )( left_white , right_white ),
merge ( yolk )( left_yolk , right_yolk ))
# ... or in point-free style using parallel (@) and sequential (>>) composition
assert crack_two_eggs == crack @ crack
>> white @ Recipe . swap ( yolk , white ) @ yolk
>> merge ( white ) @ merge ( yolk )
crack_two_eggs . draw ()
pip install discopySi vous voulez voir Discopy en action, consultez le tutoriel QNLP!
Nous souhaitons accueillir de nouveaux contributeurs!
Tout d'abord, lisez les directives contributives. Ensuite, contactez Discord ou ouvrez un problème.
Si vous avez utilisé Discopy dans le contexte d'une publication académique, nous vous suggérons de citer:
Si en outre votre travail est lié à l'informatique quantique, vous pouvez également citer:
Si vous utilisez l'une des fonctionnalités récentes (par exemple Hypergraph ), vous devez également mentionner: