4 research outputs found

    Inference of termination conditions for numerical loops in Prolog

    Full text link
    We present a new approach to termination analysis of numerical computations in logic programs. Traditional approaches fail to analyse them due to non well-foundedness of the integers. We present a technique that allows overcoming these difficulties. Our approach is based on transforming a program in a way that allows integrating and extending techniques originally developed for analysis of numerical computations in the framework of query-mapping pairs with the well-known framework of acceptability. Such an integration not only contributes to the understanding of termination behaviour of numerical computations, but also allows us to perform a correct analysis of such computations automatically, by extending previous work on a constraint-based approach to termination. Finally, we discuss possible extensions of the technique, including incorporating general term orderings.Comment: To appear in Theory and Practice of Logic Programming. To appear in Theory and Practice of Logic Programmin

    Abstracting numerical values in CLP(H,N)

    No full text
    © Springer-Verlag Berlin Heidelberg 1994. The paper defines approximations for the numerical leaves of variables in CLP(H,N) constraint systems. The abstractions are based on intervals which are computed by narrowing rules. The novelty of this approach lays in the. fact that intervals are used as abstraction and that narrowing rules do not only correspond to numerical constraints but also to unification constraints. In the first abstraction the impact of the narrowing rules is limited. A prototype implementation has been developed and the obtained results are sufficiently precise to recognise (future) redundant constraints. The abstraction can be extended (1) by incorporating the narrowing rules more globally (unification constraints are abstracted by a Prop-like abstraction, numeric constraints are kept in concrete form) and (2) by deriving ordinal relationships between variables.status: publishe
    corecore