10 research outputs found
Improving PARMA Trailing
Taylor introduced a variable binding scheme for logic variables in his PARMA
system, that uses cycles of bindings rather than the linear chains of bindings
used in the standard WAM representation. Both the HAL and dProlog languages
make use of the PARMA representation in their Herbrand constraint solvers.
Unfortunately, PARMA's trailing scheme is considerably more expensive in both
time and space consumption. The aim of this paper is to present several
techniques that lower the cost.
First, we introduce a trailing analysis for HAL using the classic PARMA
trailing scheme that detects and eliminates unnecessary trailings. The
analysis, whose accuracy comes from HAL's determinism and mode declarations,
has been integrated in the HAL compiler and is shown to produce space
improvements as well as speed improvements. Second, we explain how to modify
the classic PARMA trailing scheme to halve its trailing cost. This technique is
illustrated and evaluated both in the context of dProlog and HAL. Finally, we
explain the modifications needed by the trailing analysis in order to be
combined with our modified PARMA trailing scheme. Empirical evidence shows that
the combination is more effective than any of the techniques when used in
isolation.
To appear in Theory and Practice of Logic Programming.Comment: 36 pages, 7 figures, 8 table
Optimizing the SICStus Prolog virtual machine instruction set
The Swedish Institute of Computer Science (SICS) is the vendor of SICStus Prolog.
To decrease execution time and reduce space requirements, variants of SICStus
Prolog's virtual instruction set were investigated. Semi-automatic ways of finding
candidate sets of instructions to combine or specialize were developed and used.
Several virtual machines were implemented and the relationship between improvements
by combinations and by specializations were investigated. The benefits of specializations
and combinations of instructions to the performance of the emulator is on the
average of the order of 10%. The code size reduction is 15%
Two Applications of Logic Programming to Coq
The logic programming paradigm provides a flexible setting for representing, manipulating, checking, and elaborating proof structures. This is particularly true when the logic programming language allows for bindings in terms and proofs. In this paper, we make use of two recent innovations at the intersection of logic programming and proof checking. One of these is the foundational proof certificate (FPC) framework which provides a flexible means of defining the semantics of a range of proof structures for classical and intuitionistic logic. A second innovation is the recently released Coq-Elpi plugin for Coq in which the Elpi implementation of ?Prolog can send and retrieve information to and from the Coq kernel. We illustrate the use of both this Coq plugin and FPCs with two example applications. First, we implement an FPC-driven sequent calculus for a fragment of the Calculus of Inductive Constructions and we package it into a tactic to perform property-based testing of inductive types corresponding to Horn clauses. Second, we implement in Elpi a proof checker for first-order intuitionistic logic and demonstrate how proof certificates can be supplied by external (to Coq) provers and then elaborated into the fully detailed proof terms that can be checked by the Coq kernel
Incremental copying garbage collection for WAM-based Prolog systems
The design and implementation of an incremental copying heap garbage
collector for WAM-based Prolog systems is presented. Its heap layout consists
of a number of equal-sized blocks. Other changes to the standard WAM allow
these blocks to be garbage collected independently. The independent collection
of heap blocks forms the basis of an incremental collecting algorithm which
employs copying without marking (contrary to the more frequently used mark©
or mark&slide algorithms in the context of Prolog). Compared to standard
semi-space copying collectors, this approach to heap garbage collection lowers
in many cases the memory usage and reduces pause times. The algorithm also
allows for a wide variety of garbage collection policies including generational
ones. The algorithm is implemented and evaluated in the context of hProlog.Comment: 33 pages, 22 figures, 5 tables. To appear in Theory and Practice of
Logic Programming (TPLP
Migrating publications: how do technical writers bound an uncertain problem space?
This paper describes writer activities to define and resolve information migration issues that retard throughput of new information into technical publications in a production-focused work environment. The paper also reports the results of a questionnaire administered to a convenience sample of technical writers using ISO 8879 Standard, Generalized Markup Language (SGML), examining their information needs and information-seeking activities
Formalising non-functional requirements embedded in user requirements notation (URN) models
The growing need for computer software in different sectors of activity, (health, agriculture,
industries, education, aeronautic, science and telecommunication) together with the
increasing reliance of the society as a whole on information technology, is placing a heavy
and fast growing demand on complex and high quality software systems. In this regard, the
anticipation has been on non-functional requirements (NFRs) engineering and formal methods.
Despite their common objective, these techniques have in most cases evolved separately.
NFRs engineering proceeds firstly, by deriving measures to evaluate the quality of the constructed
software (product-oriented approach), and secondarily by improving the engineering
process (process-oriented approach). With the ability to combine the analysis of both functional
and non-functional requirements, Goal-Oriented Requirements Engineering (GORE)
approaches have become de facto leading requirements engineering methods. They propose
through refinement/operationalisation, means to satisfy NFRs encoded in softgoals at an
early phase of software development. On the other side, formal methods have kept, so far,
their promise to eliminate errors in software artefacts to produce high quality software products
and are therefore particularly solicited for safety and mission critical systems for which
a single error may cause great loss including human life.
This thesis introduces the concept of Complementary Non-functional action (CNF-action)
to extend the analysis and development of NFRs beyond the traditional goals/softgoals
analysis, based on refinement/operationalisation, and to propagate the influence of NFRs
to other software construction phases. Mechanisms are also developed to integrate the formal
technique Z/Object-Z into the standardised User Requirements Notation (URN) to
formalise GRL models describing functional and non-functional requirements, to propagate
CNF-actions of the formalised NFRs to UCMs maps, to facilitate URN construction process
and the quality of URN models.School of ComputingD. Phil (Computer Science
Supporting more types in the WAM: the hProlog tagging scheme
Starting from dProlog, we developed hProlog to become a back end for HAL. We incorporated attributed variables, the data types string and character and support for bigints. We describe how we managed to cater for all these, while not further restricting the heap address space and without efficiency loss. We explain the rationale behind some decisions, the effect on indexing, some new low-level built-in predicates and abstract machine instructions. The tagging scheme has room for extending it to other basic types