Reasoning about Prolog programs: From modes through types to assertions

  title={Reasoning about Prolog programs: From modes through types to assertions},
  author={Krzysztof R. Apt and Elena Marchiori},
  journal={Formal Aspects of Computing},
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. 
On logic programs that always succeed
A simple correctness proof for magic transformation
  • W. Drabent
  • Computer Science
    Theory and Practice of Logic Programming
  • 2011
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.
Termination Analysis of Logic Programs: Extended Abstract
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.
Universit a Di Pisa Veriication of Logic Programs Veriication of Logic Programs
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, which is designed as a trade-oo between expressive power and ease of use.
Towards Soft Typing for CLP
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.
LP with Flexible Grouping and Aggregates Using Modes
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.
Tree Set Automata for Prolog Mode Analysis
The work towards a formalism useful for static analysis of pure Prolog programs, which is a class of automata in which each accepting path represents a set of trees, and which “lift” this formalism to handle tree sets.
Specialising Interpreters Using Offline Partial Deduction
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.
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, wher
Logic and Abstraction , Verification and Falsification
This habilitation is concerned with the use of logic and abstraction techniques for the purpose of verifying and falsifying transition systems and contains results extending the type systems for which type safety can be guaranteed.


A Framework of Directionality for Proving Termination of Logic Programs
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.
On the Unification Free Prolog Programs
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.
Verifying Correctness of Logic Programs
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.
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 a
On the occur-check-free PROLOG programs
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.
Do Logic Programs Resemble Programs in Conventional Languages?
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.
Logic Programming
  • K. Apt
  • Computer Science
    Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics
  • 1990
Foundations of Logic Programming