En informática , un e-grafo es una estructura de datos que almacena una relación de equivalencia entre términos de algún lenguaje.
Definición y operaciones
Dejarsea un conjunto de funciones no interpretadas , dondees el subconjunto deque consta de funciones de aridad. Dejarser un conjunto contable de identificadores opacos que se pueden comparar para comprobar su igualdad, llamados identificadores de clase e . La aplicación dea identificadores de clase electrónicase denotay se denomina e-nodo .
El grafo electrónico representa entonces clases de equivalencia de nodos electrónicos, utilizando las siguientes estructuras de datos: [ 1 ]
- Una estructura de unión-hallazgorepresentando clases de equivalencia de identificadores de clase e, con las operaciones habituales,yUn ID de clase electrónicaes canónico si; un nodo electrónico es canónico si cadaes canónico (en).
- Una asociación de identificadores de clases electrónicas con conjuntos de nodos electrónicos, denominados clases electrónicas . Esto consiste en:
- un hashcons(es decir, una asignación) de e-nodos a identificadores de e-clase, y
- un mapa de clase electrónicaque asigna identificadores de clases electrónicas a clases electrónicas, de tal manera queasigna identificadores equivalentes al mismo conjunto de nodos electrónicos:
Invariantes
Además de la estructura anterior, un grafo electrónico válido se ajusta a varios invariantes de estructura de datos . [ 2 ] Dos nodos electrónicos son equivalentes si están en la misma clase electrónica. El invariante de congruencia establece que un grafo electrónico debe asegurar que la equivalencia sea cerrada bajo la congruencia , donde dos nodos electrónicosson congruentes cuando. El invariante hashcons establece que hashcons asigna los e-nodos canónicos a su ID de clase e.
Operaciones
Los gráficos E exponen envoltorios alrededor de la,, yoperaciones de unión-búsqueda que preservan los invariantes del grafo electrónico. La última operación, el emparejamiento electrónico, se describe a continuación.
Formulaciones equivalentes
Un e-grafo también puede formularse como un grafo bipartito.dónde
- es el conjunto de identificadores de clase electrónica (como se indicó anteriormente),
- es el conjunto de e-nodos, y
- es un conjunto de aristas dirigidas.
Existe una arista dirigida desde cada e-clase a cada uno de sus miembros, y desde cada e-nodo a cada uno de sus hijos. [ 3 ]
Emparejamiento electrónico
Dejarsea un conjunto de variables y dejemos quesea el conjunto más pequeño que incluye los símbolos de función de aridad 0 (también llamados constantes ), incluye las variables y es cerrado bajo la aplicación de los símbolos de función. En otras palabras,es el conjunto más pequeño tal que,y cuandoy, entonces. Un término que contiene variables se llama patrón , un término sin variables se llama base .
Un gráfico electrónicorepresenta un término fundamentalsi una de sus clases electrónicas representaUna clase electrónicarepresentasi algún enodoSí. Un e-nodorepresenta un términosiy cada clase electrónicarepresenta el término(en).
El emparejamiento electrónico es una operación que toma un patrón.y un gráfico electrónicoy produce todos los paresdóndees una sustitución que mapea las variables ena los identificadores de clase electrónica yes un ID de clase electrónica tal que el términoestá representado por. Existen varios algoritmos conocidos para el emparejamiento electrónico, [ 4 ] [ 5 ] el algoritmo de emparejamiento electrónico relacional se basa en uniones óptimas en el peor de los casos y es óptimo en el peor de los casos. [ 6 ]
Extracción
Dado una clase e y una función de costo que asigna cada símbolo de función enPara un número natural, el problema de extracción consiste en encontrar un término base con un costo total mínimo que esté representado por la clase e dada. Este problema es NP-difícil . [ 7 ] Tampoco existe un algoritmo de aproximación de factor constante para este problema, lo cual se puede demostrar mediante una reducción del problema de cobertura de conjuntos . Sin embargo, para grafos con ancho de árbol acotado , existe un algoritmo tratable de tiempo lineal y parámetro fijo . [ 8 ]
Complejidad
- Se puede construir un e-grafo con n igualdades en tiempo O( n log n ). [ 9 ]
Saturación de igualdad
La saturación de igualdad es una técnica para construir compiladores optimizadores que utilizan grafos e. [ 10 ] Funciona aplicando un conjunto de reescrituras mediante la coincidencia de e hasta que el grafo e se satura, se alcanza un tiempo límite, se alcanza un límite de tamaño del grafo e, se supera un número fijo de iteraciones o se alcanza alguna otra condición de parada. Después de la reescritura, se extrae un término óptimo del grafo e según alguna función de coste, generalmente relacionada con el tamaño del AST o consideraciones de rendimiento.
Aplicaciones
Los grafos E se utilizan en la demostración automática de teoremas . Son una parte crucial de los solucionadores SMT modernos como Z3 [ 11 ] y CVC4 , donde se utilizan para decidir la teoría vacía calculando el cierre de congruencia de un conjunto de igualdades, y el emparejamiento E se utiliza para instanciar cuantificadores. [ 12 ] En los solucionadores basados en DPLL(T) que utilizan aprendizaje de cláusulas impulsado por conflictos (también conocido como retroceso no cronológico), los grafos E se extienden para producir certificados de prueba. [ 13 ] Los grafos E también se utilizan en el demostrador de teoremas Simplify de ESC/Java . [ 14 ]
La saturación de igualdad se utiliza en compiladores optimizadores especializados , [ 15 ] por ejemplo, para aprendizaje profundo [ 16 ] , álgebra lineal [ 17 ] y autovectorización para procesadores de señales digitales [ 18 ] . La saturación de igualdad también se ha utilizado para la validación de traducción aplicada a la cadena de herramientas LLVM . [ 19 ]
Los grafos E se han aplicado a varios problemas en el análisis de programas , incluyendo fuzzing, [ 20 ] interpretación abstracta, [ 21 ] y aprendizaje de bibliotecas. [ 22 ]
Referencias
- ↑ ( Willsey et al. 2021 )
- ↑ ( Willsey et al. 2021 )
- ↑ ( Goharshady, Lam y Parreaux 2024 )
- ↑ ( de Moura y Bjørner 2007 )
- ↑ Moskal, Michał; Łopuszański, Jakub; Kiniry, Joseph R. (2008-05-06). "E-matching for Fun and Profit" . Electronic Notes in Theoretical Computer Science . Actas del 5.º Taller Internacional sobre Satisfacibilidad Módulo Teorías (SMT 2007). 198 (2): 19– 35. doi : 10.1016/j.entcs.2008.04.078 . ISSN 1571-0661 .
- ↑ Zhang, Yihong; Wang, Yisu Remy; Willsey, Max; Tatlock, Zachary (2022-01-12). "Relational e-matching" . Actas de la ACM sobre lenguajes de programación . 6 (POPL): 35:1–35:22. arXiv : 2108.02290 . doi : 10.1145/3498696 . S2CID 236924583 .
- ↑ Stepp, Michael Benjamin (2011). Saturación de la igualdad: desafíos y aplicaciones de la ingeniería (tesis doctoral). EE. UU.: Universidad de California en San Diego. ISBN 978-1-267-03827-2.
- ↑ ( Goharshady, Lam y Parreaux 2024 )
- ↑ ( Flatt et al. 2022 , p. 2)
- ↑ ( Tate et al. 2009 )
- ↑ de Moura, Leonardo; Bjørner, Nikolaj (2008). "Z3: Un solucionador SMT eficiente". En Ramakrishnan, CR; Rehof, Jakob (eds.). Herramientas y algoritmos para la construcción y el análisis de sistemas . Lecture Notes in Computer Science. Vol. 4963. Berlín, Heidelberg: Springer. pp. 337–340 . doi : 10.1007/978-3-540-78800-3_24 . ISBN 978-3-540-78800-3.
- ↑ Rümmer, Philipp (2012). "E-Matching with Free Variables". En Bjørner, Nikolaj; Voronkov, Andrei (eds.). Logic for Programming, Artificial Intelligence, and Reasoning. Actas . 18.ª Conferencia Internacional, LPAR-18, Mérida, Venezuela, 11-15 de marzo de 2012. Lecture Notes in Computer Science. Vol. 7180. Berlín, Heidelberg: Springer. pp. 359-374 . doi : 10.1007/978-3-642-28717-6_28 . ISBN 978-3-642-28717-6.
- ↑ ( Flatt et al. 2022 , p. 2)
- ↑ Detlefs, David; Nelson, Greg; Saxe, James B. (mayo de 2005). "Simplify: un demostrador de teoremas para la verificación de programas". Journal of the ACM . 52 (3): 365– 473. doi : 10.1145/1066100.1066102 . ISSN 0004-5411 . S2CID 9613854 .
- ↑ Joshi, Rajeev; Nelson, Greg; Randall, Keith (17 de mayo de 2002). "Denali: un superoptimizador orientado a objetivos". ACM SIGPLAN Notices . 37 (5): 304– 314. doi : 10.1145/543552.512566 . ISSN 0362-1340 .
- ^ Yang, Yichen; Phothilimtha, Phitchaya Mangpo; Wang, Yisu Remy; Willsey, Max; Roy, Sudip; Pienaar, Jacques (17 de marzo de 2021). "Saturación de igualdad para la superoptimización de gráficos tensoriales". arXiv : 2101.01332 [ cs.AI ].
- ↑ Wang, Yisu Remy; Hutchison, Shana; Leang, Jonathan; Howe, Bill; Suciu, Dan (22 de diciembre de 2020). "SPORES: Optimización suma-producto mediante saturación de igualdad relacional para álgebra lineal a gran escala". arXiv : 2002.07951 [ cs.DB ].
- ↑ Thomas, Samuel; Bornholt, James (1 de junio de 2026). "Generación automática de compiladores vectorizadores para procesadores de señales digitales personalizables" . Communications of the ACM . 69 (6): 97–105 . doi : 10.1145/3802600 . ISSN 0001-0782 .
- ↑ Stepp, Michael; Tate, Ross; Lerner, Sorin (2011). «Validador de traducción basado en igualdad para LLVM». En Gopalakrishnan, Ganesh; Qadeer, Shaz (eds.). Verificación asistida por ordenador . Lecture Notes in Computer Science. Vol. 6806. Berlín, Heidelberg: Springer. pp. 737–742 . doi : 10.1007/978-3-642-22110-1_59 . ISBN 978-3-642-22110-1.
- ↑ "Wasm-mutate: Fuzzing WebAssembly Compilers with E-Graphs (EGRAPHS 2022) - PLDI 2022" . pldi22.sigplan.org . Consultado el 3 de febrero de 2023 .
- ↑ Coward, Samuel; Constantinides, George A.; Drane, Theo (17 de marzo de 2022). "Interpretación abstracta en E-Graphs". arXiv : 2203.09191 [ cs.LO ].Coward, Samuel; Constantinides, George A.; Drane, Theo (30 de mayo de 2022). "Combinando E-Graphs con interpretación abstracta". arXiv : 2205.14989 [ cs.DS ].
- ↑ Cao, David; Kunkel, Rose; Nandi, Chandrakana; Willsey, Max; Tatlock, Zachary; Polikarpova, Nadia (2023-01-09). "babble: Learning Better Abstractions with E-Graphs and Anti-Unification". Proceedings of the ACM on Programming Languages . 7 (POPL): 396– 424. arXiv : 2212.04596 . doi : 10.1145/3571207 . ISSN 2475-1421 . S2CID 254536022 .
- de Moura, Leonardo; Bjørner, Nikolaj (2007). "Efficient E-Matching for SMT Solvers" . En Pfenning, Frank (ed.). Automated Deduction – CADE-21 . Lecture Notes in Computer Science. Vol. 4603. Berlín, Heidelberg: Springer. pp. 183–198 . doi : 10.1007/978-3-540-73595-3_13 . ISBN 978-3-540-73595-3.
- Willsey, Max; Nandi, Chandrakana; Wang, Yisu Remy; Flatt, Oliver; Tatlock, Zachary; Panchekha, Pavel (2021-01-04). "egg: Saturación de igualdad rápida y extensible" . Actas de la ACM sobre lenguajes de programación . 5 (POPL): 23:1–23:29. arXiv : 2004.03082 . doi : 10.1145/3434304 . S2CID 226282597 .
- Tate, Ross; Stepp, Michael; Tatlock, Zachary; Lerner, Sorin (21 de enero de 2009). «Saturación de igualdad» . Actas del 36.º simposio anual ACM SIGPLAN-SIGACT sobre principios de lenguajes de programación . POPL '09. Savannah, GA, EE. UU.: Association for Computing Machinery. págs. 264-276 . doi : 10.1145/1480881.1480915 . ISBN 978-1-60558-379-2. S2CID 2138086 .
- Flatt, Oliver; Coward, Samuel; Willsey, Max; Tatlock, Zachary; Panchekha, Pavel (octubre de 2022). «Pequeñas pruebas a partir del cierre de congruencia» . En A. Griggio; N. Rungta (eds.). Actas de la 22.ª Conferencia sobre Métodos Formales en Diseño Asistido por Computadora – FMCAD 2022. TU Wien Academic Press. págs. 75–83 . doi : 10.34727/2022/isbn.978-3-85448-053-2_13 . ISBN 978-3-85448-053-2. S2CID 252118847 .
- Goharshady, Amir Kafshdar; Lam, Chun Kit; Parreaux, Lionel (2024-10-08). "Extracción rápida y óptima para grafos de igualdad dispersos" . Actas de la ACM sobre lenguajes de programación . 8 (OOPSLA2): 361:2551–361:2577. doi : 10.1145/3689801 .
Enlaces externos
- El proyecto del huevo
- Un cuaderno de Colab que explica los gráficos electrónicos.
- Estructuras de datos de grafos