Reasoning about Prolog programs: From modes through types to assertions

@article{Apt2005ReasoningAP,
  title={Reasoning about Prolog programs: From modes through types to assertions},
  author={K. Apt and E. Marchiori},
  journal={Formal Aspects of Computing},
  year={2005},
  volume={6},
  pages={743-765}
}
We provide here a systematic comparative study of the relative strength and expressive power of a number of methods for program analysis of Prolog. Among others we show that these methods can be arranged in the following hierarchy: mode analysis ⇒ type analysis ⇒ monotonic properties ⇒ nonmonotonic run-time properties. We also discuss a method allowing us to prove global run-time properties. 

Topics from this paper

Abstract interpretation based verification of logic programs
TLDR
An assertion based verification method is derived and two instances based on different assertion languages are shown: a decidable assertion language and CLP used as an assertion language. Expand
On logic programs that always succeed
TLDR
A generalized definition of SLD-resolution admitting restrictions on atom and/or clause selectability is introduced, and a theoretical framework to reason about programs and queries such that all derivations are successful is offered. Expand
A simple correctness proof for magic transformation
  • W. Drabent
  • Computer Science
  • Theory and Practice of Logic Programming
  • 2011
TLDR
A simple and concise proof of correctness of the magic transformation may provide a useful example of formal reasoning about logic programs and refers to the operational semantics of the source programs. Expand
Termination Analysis of Logic Programs: Extended Abstract
TLDR
This paper briefly discusses both conditions that are equivalent to termination and their approximations that imply termination and can be verified automatically in Turing-complete logic programs. Expand
Universit a Di Pisa Veriication of Logic Programs Veriication of Logic Programs
We propose a proof method in the style of Hoare's logic, aimed at providing a unifying framework for the veriication of logic and Prolog programs with respect to their speciications. The method,Expand
Towards Soft Typing for CLP
TLDR
The paper outlines a soft typing approach where optional type speciications given by the user are completed by type inference and illustrates the practicability and the usefulness of the soft typing for error detection and localisation by referring to a speciic type inference system. Expand
LP with Flexible Grouping and Aggregates Using Modes
TLDR
A new grouping operator for logic programs based on the bagof predicate is proposed, which allows us to prove properties regarding groundness of computed answer substitutions and termination and to define a somewhat declarative semantics for it. Expand
Tree Set Automata for Prolog Mode Analysis
We present our work towards a formalism useful for static analysis of pure Prolog programs. Semantically, such programs reason about trees, but the solvers actually manipulate sets of trees. Thus, atExpand
Specialising Interpreters Using Offline Partial Deduction
TLDR
New binding-types are presented, and it is shown how they can be used to effectively specialise a wide variety of interpreters and how to achieve Jones-optimality in a systematic way for several interpreters. Expand
Representation of Compositional Relational Programs
Usability aspects of programming languages are often overlooked, yet have a substantial effect on programmer productivity. These issues are even more acute in the field of Inductive Synthesis, wherExpand
...
1
2
3
4
...

References

SHOWING 1-10 OF 23 REFERENCES
A Framework of Directionality for Proving Termination of Logic Programs
TLDR
It is shown how this rich notion of directionality of predicates can be used to prove the universal termination of LD-resolution for logic programs with non-ground goals by using simple syntactic orderings of the kind used in rewriting theory. Expand
On the Unification Free Prolog Programs
TLDR
It is concluded that in case of several well-known Prolog programs the unification algorithm can be replaced by iterated matching, which offers a possibility of improving the efficiency of program's execution. Expand
Verifying Correctness of Logic Programs
TLDR
A sufficient condition for partial correctness with respect to a pre/post specification of program modules is proposed and Modularity and pre/ post specifications of programs modules are discussed. Expand
Proving Termination of Logic Programs by Exploiting Term Properties
In this paper semi-linear norms, a class of functions to weight the terms occurring in a program, are defined and studied. All the functions in this class have the nice property of allowing aExpand
On the occur-check-free PROLOG programs
TLDR
This paper provides natural syntactic conditions that allow the occur-check to be safely omitted from the unification algorithm, and proposes a program transformation that transforms every program into a program for which only the calls to the built-in unification predicate need to be resolved by a unification algorithm with the occurs-check. Expand
Do Logic Programs Resemble Programs in Conventional Languages?
TLDR
This paper attempts to formalize the concept of a conventional logic program to check how often Prolog programs fall in a restricted class of conventional programs and ascertain which programming techniques result in programs falling outside this class. Expand
Logic Programming
  • K. Apt
  • Computer Science
  • Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics
  • 1990
TLDR
This chapter presents a self-contained introduction to the theory of logic programming, which discusses the causal dependence between various concepts and notions and presents the notion of SLD-resolution, which is central to the subject of logic Programming. Expand
Foundations of Logic Programming
Apt . Logic programming
  • 1994
Received July 1993 Accepted in revised form
  • Received July 1993 Accepted in revised form
  • 1994
...
1
2
3
...