HOME

TheInfoList



OR:

Transaction Logic is an extension of
predicate logic First-order logic—also known as predicate logic, quantificational logic, and first-order predicate calculus—is a collection of formal systems used in mathematics, philosophy, linguistics, and computer science. First-order logic uses quanti ...
that accounts in a clean and declarative way for the phenomenon of state changes in logic programs and
database In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases spa ...
s. This extension adds connectives specifically designed for combining simple actions into complex transactions and for providing control over their execution. The logic has a natural
model theory In mathematical logic, model theory is the study of the relationship between formal theories (a collection of sentences in a formal language expressing statements about a mathematical structure), and their models (those structures in which the ...
and a sound and complete proof theory. Transaction Logic has a Horn clause subset, which has a procedural as well as a declarative semantics. The important features of the logic include hypothetical and committed updates, dynamic constraints on transaction execution, non-determinism, and bulk updates. In this way, Transaction Logic is able to declaratively capture a number of non-logical phenomena, including procedural knowledge in
artificial intelligence Artificial intelligence (AI) is intelligence—perceiving, synthesizing, and inferring information—demonstrated by machine A machine is a physical system using Power (physics), power to apply Force, forces and control Motion, moveme ...
, active databases, and methods with side effects in object databases. Transaction Logic was originally proposed in A.J. Bonner and M. Kifer (1993), ''Transaction Logic Programming'', International Conference on Logic Programming (ICLP), 1993. b
Anthony Bonner
an
Michael Kifer
and later described in more detail in and. The most comprehensive description appears in. In later years, Transaction Logic was extended in various ways, including
concurrency Concurrent means happening at the same time. Concurrency, concurrent, or concurrence may refer to: Law * Concurrence, in jurisprudence, the need to prove both ''actus reus'' and ''mens rea'' * Concurring opinion (also called a "concurrence"), a ...
,A.J. Bonner and M. Kifer (1996)
''Concurrency and communication in Transaction Logic''
Joint Intl. Conference and Symposium on Logic Programming, Bonn, Germany, September 1996
defeasible reasoning, partially defined actions, and other features. In 2013, the original paper on Transaction Logic ha
won
th
20-year Test of Time Award
of the Association for Logic Programming as the most influential paper from the proceedings o
ICLP 1993 conference
in the preceding 20 years.


Examples


Graph coloring

Here denotes the elementary update operation of ''transactional insert''. The connective is called ''serial conjunction''. colorNode <- // color one node correctly node(N) ⊗ ¬ colored(N,_) ⊗ color(C) ⊗ ¬(adjacent(N,N2) ∧ colored(N2,C)) ⊗ tinsert(colored(N,C)). colorGraph <- ¬uncoloredNodesLeft. colorGraph <- colorNode ⊗ colorGraph.


Pyramid stacking

The elementary update represents the ''transactional delete'' operation. stack(N,X) <- N>0 ⊗ move(Y,X) ⊗ stack(N-1,Y). stack(0,X). move(X,Y) <- pickup(X) ⊗ putdown(X,Y). pickup(X) <- clear(X) ⊗ on(X,Y) ⊗ ⊗ tdelete(on(X,Y)) ⊗ tinsert(clear(Y)). putdown(X,Y) <- wider(Y,X) ⊗ clear(Y) ⊗ tinsert(on(X,Y)) ⊗ tdelete(clear(Y)).


Hypothetical execution

Here is the modal operator of possibility: If both and are possible, execute . Otherwise, if only is possible, then execute it. execute <- <>action1 ⊗ <>action2 ⊗ action1. execute <- ¬<>action1 ⊗ <>action2 ⊗ action2.


Dining philosophers

Here is the logical connective of parallel conjunction of Concurrent Transaction Logic. diningPhilosophers <- phil(1) , phil(2) , phil(3) , phil(4).


Implementations

A number of implementations of Transaction Logic exist: * The original implementation. * An implementation of Concurrent Transaction Logic. * Transaction Logic enhanced with
tabling In computing, memoization or memoisation is an optimization technique used primarily to speed up computer programs by storing the results of expensive function calls and returning the cached result when the same inputs occur again. Memoization ...
. An implementation of Transaction Logic has also been incorporated as part of the Flora-2 knowledge representation and reasoning system. All these implementations are
open source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
.


References

{{Reflist


External links


Flora-2 Web site
containing additional papers on Transaction Logic Logic programming languages Declarative programming languages Knowledge representation