
Die Diskopie ist ein Python -Toolkit zum Berechnen mit Stringdiagrammen.
Die Diskopie begann als Implementierung von Discocat und QNLP. Dies ist jetzt eine eigene Bibliothek geworden: Lambeq.
Arrow für kostenlose Dolchkategorien mit formalen Summen, unären Operatoren und symbolischen Variablen aus SympyDiagram für planare String -Diagramme in einer (vor) monoidalen Kategorie in der Hierarchie grafischer Sprachen (mit Zöpfen, Wendungen, Spinnen usw.)Hypergraph für Stringdiagramme in Hypergraphkategorien und deren Einschränkungen für symmetrische, verfolgte, kompakte und Markov -KategorienFunctor -Bewertung von Diagramm in:Dieses Beispiel ist von Pawel Sobocinskis Blog -Post Crema di Mascarpone und diagrammatischem Denken inspiriert.
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 discopyWenn Sie Discopy in Aktion sehen möchten, lesen Sie das QNLP -Tutorial!
Wir möchten neue Mitwirkende begrüßen!
Lesen Sie zunächst die beitragenden Richtlinien. Dann melden Sie sich mit Discord oder öffnen Sie ein Problem.
Wenn Sie Discopy im Kontext einer akademischen Veröffentlichung verwendet haben, empfehlen wir Ihnen, zu zitieren:
Wenn Ihre Arbeit weiterhin mit Quantum Computing zusammenhängt, können Sie auch zitieren:
Wenn Sie eine der jüngsten Funktionen (z. B. Hypergraph ) verwenden, sollten Sie auch erwähnen: