Наукові публікації

Наукові публікації

24 bookmarks
Custom sorting
Applying Constraint Programming to Minimal Lottery Designs
Applying Constraint Programming to Minimal Lottery Designs
We develop and deploy a set of constraints for the purpose of calculating minimal sizes of lottery designs. Specifically, we find the minimum number of tickets of size six which are needed to match at least two balls on any draw of size six, whenever there are at most 70 balls.
·up.raindrop.io·
Applying Constraint Programming to Minimal Lottery Designs
An Executable Specification of Oncology Dose-Escalation Protocols with Prolog
An Executable Specification of Oncology Dose-Escalation Protocols with Prolog

We present, as a pure Prolog program, the first executable specification of the 3 + 3 dose-escalation protocol commonly used in early-phase oncology drug development. In this program, the imperative operations of the protocol emerge as consequences of clinically meaningful anticipatory-regret scenarios that are declared as CLP(ℤ) constraints. This ‘regret-constrained’ (RC) specification yields a robust formulation which can be used to prove clinically meaningful safety and liveness properties of the protocol before incorporating it into a trial, and then as an on-line decision support system while the trial is underway. Our RC specification also readily accommodates certain pragmatic modifications to trial enrollment which severely strain traditionally imperative formulations. The features of modern Prolog systems let us describe the 3 + 3 protocol with a short and general program that has desirable algebraic properties and can therefore be used, tested and reasoned about in several different ways.

·up.raindrop.io·
An Executable Specification of Oncology Dose-Escalation Protocols with Prolog
Indexing dif/2
Indexing dif/2

Many Prolog programs are unnecessarily impure because of inadequate means to express syntactic inequality. While the frequently provided built-in dif/2 is able to correctly describe expected answers, its direct use in programs often leads to overly complex and inefficient definitions — mainly due to the lack of adequate indexing mechanisms. We propose to overcome these problems by using a new predicate that subsumes both equality and inequality via reification. Code complexity is reduced with a monotonic, higher-order if-then-else construct based on call/N. For comparable correct uses of impure definitions, our approach is as determinate and similarly efficient as its impure counterparts.

·up.raindrop.io·
Indexing dif/2
SWI-Prolog
SWI-Prolog
In this article we present SWI-Prolog as an integrating tool, supporting a wide range of ideas developed in the Prolog community and acting as glue between <i>foreign</i> resources. This article itself is the glue between technical articles on SWI-Prolog, providing context and experience in applying them over a longer period.
·up.raindrop.io·
SWI-Prolog
Portability of Prolog programs: theory and case-studies
Portability of Prolog programs: theory and case-studies
(Non-)portability of Prolog programs is widely considered as an important factor in the lack of acceptance of the language. Since 1995, the core of the language is covered by the ISO standard 13211-1. Since 2007, YAP and SWI-Prolog have established a basic compatibility framework. This article describes and evaluates this framework. The aim of the framework is running the same code on both systems rather than migrating an application. We show that today, the portability within the family of Edinburgh/Quintus derived Prolog implementations is good enough to allow for maintaining portable real-world applications.
·up.raindrop.io·
Portability of Prolog programs: theory and case-studies
Lambdas in ISO Prolog
Lambdas in ISO Prolog

Higher order programming is possible in Prolog. There is no need to extend the language for that. See Richard O'Keefe's arguments in comp.lang.prolog more than ten years ago. What is missing are lambda expressions.

We present a very simple implementation of lambda expressions in ISO Prolog that fits into the existing conventions for higher order predicates based on call/N. No syntax or compiler extension is needed.

·up.raindrop.io·
Lambdas in ISO Prolog
DCGs + Memoing = Packrat Parsing. But is it worth it?
DCGs + Memoing = Packrat Parsing. But is it worth it?
Packrat parsing is a newly popular technique for efficiently implementing recursive descent parsers. Packrat parsing avoids the potential exponential costs of recursive descent parsing with backtracking by ensuring that each production rule in the grammar is tested at most once against each position in the input stream. This paper argues that (a) packrat parsers can be trivially implemented using a combination of definite clause grammar rules and memoing, and that (b) packrat parsing may actually be significantly less efficient than plain recursive descent with backtracking, but (c) memoing the recognizers of just one or two nonterminals, selected in accordance with Amdahl’s law, can sometimes yield speedups. We present experimental evidence to support these claims.
·up.raindrop.io·
DCGs + Memoing = Packrat Parsing. But is it worth it?
The birth of Prolog
The birth of Prolog
The programming language, Prolog, was born of a project aimed not at producing a programming language but at processing natural languages; in this case, French. The project gave rise to a preliminary version of Prolog at the end of 1971 and a more definitive version at the end of 1972. This article gives the history of this project and describes in detail the preliminary and then the final versions of Prolog. The authors also felt it appropriate to describe the Q-systems since it was a language which played a prominent part in Prolog’s genesis.
·up.raindrop.io·
The birth of Prolog
Hardware Design and Implementation of the Personal Sequential Inference Machine (PSI)
Hardware Design and Implementation of the Personal Sequential Inference Machine (PSI)
The Personal Sequential Inference Machine (PSI) is a personal computer designed as a tool for software and hardware development in Japan's Fifth Generation Computer Systems (FGCS) project. This paper describes PSI's hardware systems and the unique features of ite data processing and sequence control units.
·up.raindrop.io·
Hardware Design and Implementation of the Personal Sequential Inference Machine (PSI)