6,177 research outputs found
Practical Methods for Proving Termination of General Logic Programs
Termination of logic programs with negated body atoms (here called general
logic programs) is an important topic. One reason is that many computational
mechanisms used to process negated atoms, like Clark's negation as failure and
Chan's constructive negation, are based on termination conditions. This paper
introduces a methodology for proving termination of general logic programs
w.r.t. the Prolog selection rule. The idea is to distinguish parts of the
program depending on whether or not their termination depends on the selection
rule. To this end, the notions of low-, weakly up-, and up-acceptable program
are introduced. We use these notions to develop a methodology for proving
termination of general logic programs, and show how interesting problems in
non-monotonic reasoning can be formalized and implemented by means of
terminating general logic programs.Comment: See http://www.jair.org/ for any accompanying file
Design of abstract domains using first-order logic
In this paper we propose a simple framework based on first-order logic, for the design and decomposition of abstract domains for static analysis. An assertion language is chosen that specifies the properties of interest, and abstract domains are defined to be suitably chosen sets of assertions. Composition and decomposition of abstract domains is facilitated by their logical specification in first-order logic. In particular, the operations of reduced product and disjunctive completion are formalized in this framework. Moreover, the notion of (conjunctive) factorization of sets of assertions is introduced, that allows one to decompose domains in `disjoint' parts. We illustrate the use of this framework by studying typical abstract domains for ground-dependency and aliasing analysis in logic programming
Vulnerability and Protection of Critical Infrastructures
Critical infrastructure networks are a key ingredient of modern society. We
discuss a general method to spot the critical components of a critical
infrastructure network, i.e. the nodes and the links fundamental to the perfect
functioning of the network. Such nodes, and not the most connected ones, are
the targets to protect from terrorist attacks. The method, used as an
improvement analysis, can also help to better shape a planned expansion of the
network.Comment: 4 pages, 1 figure, 3 table
Proving termination of logic programs with delay declarations
In this paper we propose a method for proving termination of logic programs with delay declarations. The method is based on the notion of recurrent logic program, which is used to prove programs terminating wrt an arbitrary selection rule. Most importantly, we use the notion of bound query (as proposed by M. Bezem) in the definition of cover, a new notion which forms the kernel of our approach. We introduce the class of delay recurrent programs and prove that programs in this class terminate for all local delay selection rules, provided that the delay conditions imply boundedness. The corresponding method can be also used to transform a logic program into a terminating logic program with delay declarations
Proving deadlock freedom of logic programs with dynamic scheduling
In increasingly many logic programming systems, the Prolog left to right selection rule has been replaced with dynamic selection rules, that select an atom of a query among those satisfying suitable conditions. These conditions describe the form of the arguments of every program predicate, by means of a so-called delay declaration. Dynamic selection rules introduce the possibility of deadlock, an abnormal form of termination that occurs if the query is non-empty and it contains no `selectable' atoms. In this paper, we introduce a simple compositional assertional method for proving deadlock freedom. The method is based on the notion of suspension cover, a static description of the possible dynamic schedulings of the body atoms of a clause, according to a given delay declaration. In the method, we assume that monotonic assertions are used for specifying the conditions of the delay declaration. Apart sections are devoted to two more practical instances of the method, that use types and modes, respectively
- …