stringtranslate.com

Lógica de transacción

Transaction Logic es una extensión de la lógica de predicados que explica de forma limpia y declarativa el fenómeno de los cambios de estado en programas lógicos y bases de datos . Esta extensión agrega conectores diseñados específicamente para combinar acciones simples en transacciones complejas y para proporcionar control sobre su ejecución. La lógica tiene una teoría del modelo natural y una teoría de prueba sólida y completa . Transaction Logic tiene un subconjunto de cláusulas Horn , que tiene una semántica tanto procesal como declarativa. Las características importantes de la lógica incluyen actualizaciones hipotéticas y comprometidas, restricciones dinámicas en la ejecución de transacciones, no determinismo y actualizaciones masivas. De esta manera, Transaction Logic es capaz de capturar declarativamente una serie de fenómenos no lógicos, incluido el conocimiento procedimental en inteligencia artificial , bases de datos activas y métodos con efectos secundarios en bases de datos de objetos .

La lógica de transacciones fue propuesta originalmente en 1993 por Anthony Bonner y Michael Kifer [1] y luego se describió con más detalle en An Overview of Transaction Logic [2] and Logic Programming for Database Transactions . [3] La descripción más completa aparece en el informe técnico de Bonner & Kifer de 1995. [4]

En años posteriores, la lógica de transacciones se amplió de varias maneras, incluida la concurrencia , [5] razonamiento anulable , [6] acciones parcialmente definidas, [7] y otras características. [8] [9]

En 2013, el artículo original sobre Transaction Logic ganó el premio Test of Time de 20 años de la Asociación de Programación Lógica como el artículo más influyente de las actas de la conferencia ICLP 1993 en los 20 años anteriores.

Ejemplos

Coloración de gráficos

Aquí tinsert denota la operación de actualización elemental de inserción transaccional . La conectiva se llama conjunción serial .

colorNode <- // colorea un nodo correctamente nodo(N) ⊗ ¬ coloreado(N,_) ⊗ color(C) ⊗ ¬(adyacente(N,N2) ∧ coloreado(N2,C)) ⊗ inserto(coloreado(N,C)).colorGraph <- ¬uncoloredNodesLeft.colorGraph <- colorNode ⊗ colorGraph.

Apilamiento piramidal

La actualización elemental tdelete representa la operación de eliminación transaccional .

apilar(N,X) <- N>0 ⊗ mover(Y,X) ⊗ apilar(N-1,Y).pila (0,X).mover(X,Y) <- recoger(X) ⊗ dejar(X,Y).recoger(X) <- borrar(X) ⊗ en(X,Y) ⊗ ⊗ tdelete(on(X,Y)) ⊗ tinsert(clear(Y)).humillar(X,Y) <- más ancho(Y,X) ⊗ borrar(Y) ⊗ tinsert(en(X,Y)) ⊗ tdelete(borrar(Y)).

Ejecución hipotética

Aquí <> está el operador modal de posibilidad: si tanto acción1 como acción2 son posibles, ejecute acción1 . De lo contrario, si solo es posible la acción2 , ejecútela.

ejecutar <- <>acción1 ⊗ <>acción2 ⊗ acción1.ejecutar <- ¬<>acción1 ⊗ <>acción2 ⊗ acción2.

Filósofos gastronómicos

Aquí | es el conectivo lógico de la conjunción paralela de la lógica de transacciones concurrentes. [5]

comedorFilósofos <- phil(1) | filo(2) | filo(3) | filo(4).

Implementaciones

Existen varias implementaciones de Transaction Logic:

Todas estas implementaciones son de código abierto .

Referencias

  1. ^ AJ Bonner y M. Kifer (1993), Programación lógica de transacciones , Conferencia internacional sobre programación lógica (ICLP), 1993.
  2. ^ AJ Bonner y M. Kifer (1994), Una descripción general de la lógica de transacciones , Ciencias de la Computación Teórica, 133:2, 1994.
  3. ^ AJ Bonner y M. Kifer (1998), Programación lógica para transacciones de bases de datos en lógicas para bases de datos y sistemas de información, J. Chomicki y G. Saake (eds.), Kluwer Academic Publ., 1998.
  4. ^ AJ Bonner y M. Kifer (1995), Programación de lógica de transacciones (o una lógica de conocimiento declarativo y procesal). Informe técnico CSRI-323, noviembre de 1995, Instituto de Investigación en Ciencias de la Computación, Universidad de Toronto.
  5. ^ ab AJ Bonner y M. Kifer (1996), Concurrencia y comunicación en Transaction Logic, Joint Intl. Conferencia y Simposio sobre Programación Lógica, Bonn, Alemania, septiembre de 1996
  6. ^ P. Fodor y M. Kifer (2011), Lógica de transacciones con valores predeterminados y teorías de argumentación. En Comunicaciones técnicas de la 27ª Conferencia Internacional sobre Programación Lógica (ICLP), julio de 2011.
  7. ^ M. Rezk y M. Kifer (2012), Lógica de transacciones con acciones parcialmente definidas. Revista de Semántica de Datos, agosto de 2012, vol. 1, núm. 2, saltador.
  8. ^ H. Davulcu, M. Kifer y IV Ramakrishnan (2004), CTR-S: una lógica para especificar contratos en servicios web semánticos. Actas de la 13ª Conferencia World Wide Web (WWW2004), mayo de 2004.
  9. ^ P. Fodor y M. Kifer (2010), Presentación de lógica de transacciones. En Actas del 12º simposio internacional ACM SIGPLAN sobre principios y práctica de la programación declarativa (PPDP), julio de 2010.
  10. ^ Colgado, Samuel (1996). "Prototipo de lógica de transacciones". Universidad de Toronto, Departamento de Ciencias de la Computación . Consultado el 10 de mayo de 2021 .
  11. ^ Sleghel, Amalia F. (2000). "Prototipo de lógica de transacciones concurrentes". Universidad de Toronto, Departamento de Ciencias de la Computación . Consultado el 10 de mayo de 2021 .
  12. ^ "Representación del conocimiento y razonamiento con Flora-2". Fuenteforge.net . Consultado el 10 de mayo de 2021 .

enlaces externos