
La disco es un kit de herramientas de Python para calcular con diagramas de cadenas.
La disco comenzó como una implementación de DISCOCAT y QNLP. Esto ahora se ha convertido en su propia biblioteca: Lambeq.
Arrow para categorías de dagas gratuitas con sumas formales, operadores unaros y variables simbólicas de SympyDiagram para diagramas de cadenas planas en cualquier categoría (pre) monoidal en la jerarquía de idiomas gráficos (con trenzas, giros, arañas, etc.)Hypergraph para diagramas de cadenas en categorías de hipergrafios y sus restricciones a las categorías simétricas, trazadas, compactas y de MarkovFunctor en:Este ejemplo está inspirado en la publicación del blog de Pawel Sobocinski Crema Di Mascarpone y el razonamiento esquemático.
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 desea ver la disco en acción, ¡consulte el tutorial QNLP!
¡Estamos ansiosos por dar la bienvenida a los nuevos contribuyentes!
Primero, lea las pautas contribuyentes. Luego ponte en contacto con Discord o abre un problema.
Si usó la disco en el contexto de una publicación académica, le sugerimos que cite:
Si además su trabajo está relacionado con la computación cuántica, también puede citar:
Si usa alguna de las características recientes (por ejemplo, Hypergraph ), también debe mencionar: