2,476 research outputs found
SICStus MT - A Multithreaded Execution Environment for SICStus Prolog
The development of intelligent software agents and other
complex applications which continuously interact with their
environments has been one of the reasons why explicit concurrency has
become a necessity in a modern Prolog system today. Such applications
need to perform several tasks which may be very different with respect
to how they are implemented in Prolog. Performing these tasks
simultaneously is very tedious without language support.
This paper describes the design, implementation and evaluation of a
prototype multithreaded execution environment for SICStus Prolog. The
threads are dynamically managed using a small and compact set of
Prolog primitives implemented in a portable way, requiring almost no
support from the underlying operating system
Measuring Coverage of Prolog Programs Using Mutation Testing
Testing is an important aspect in professional software development, both to
avoid and identify bugs as well as to increase maintainability. However,
increasing the number of tests beyond a reasonable amount hinders development
progress. To decide on the completeness of a test suite, many approaches to
assert test coverage have been suggested. Yet, frameworks for logic programs
remain scarce.
In this paper, we introduce a framework for Prolog programs measuring test
coverage using mutations. We elaborate the main ideas of mutation testing and
transfer them to logic programs. To do so, we discuss the usefulness of
different mutations in the context of Prolog and empirically evaluate them in a
new mutation testing framework on different examples.Comment: 16 pages, Accepted for presentation in WFLP 201
On the practicality of global flow analysis of logic programs
This paper addresses the issue of the practicality of global flow analysis in logic program compilation, in terms of both speed and precision of analysis. It discusses design and implementation aspects of two practical abstract interpretation-based flow analysis systems: MA3, the MOO Andparallel Analyzer and Annotator; and Ms, an experimental mode inference system developed for SB-Prolog. The paper also provides performance data obtained from these implementations. Based on these results, it is concluded that the overhead of global flow analysis is not prohibitive, while the results of analysis can be quite precise and useful
A Design and Implementation of the Extended Andorra Model
Logic programming provides a high-level view of programming, giving
implementers a vast latitude into what techniques to explore to achieve the
best performance for logic programs. Towards obtaining maximum performance, one
of the holy grails of logic programming has been to design computational models
that could be executed efficiently and that would allow both for a reduction of
the search space and for exploiting all the available parallelism in the
application. These goals have motivated the design of the Extended Andorra
Model, a model where goals that do not constrain non-deterministic goals can
execute first.
In this work we present and evaluate the Basic design for Extended Andorra
Model (BEAM), a system that builds upon David H. D. Warren's original EAM with
Implicit Control. We provide a complete description and implementation of the
BEAM System as a set of rewrite and control rules. We present the major data
structures and execution algorithms that are required for efficient execution,
and evaluate system performance.
A detailed performance study of our system is included. Our results show that
the system achieves acceptable base performance, and that a number of
applications benefit from the advanced search inherent to the EAM.Comment: 43 pages, To appear in Theory and Practice of Logic Programming
(TPLP
- âŠ