151 research outputs found
An exercise in transformational programming: Backtracking and Branch-and-Bound
We present a formal derivation of program schemes that are usually called Backtracking programs and Branch-and-Bound programs. The derivation consists of a series of transformation steps, specifically algebraic manipulations, on the initial specification until the desired programs are obtained. The well-known notions of linear recursion and tail recursion are extended, for structures, to elementwise linear recursion and elementwise tail recursion; and a transformation between them is derived too
Ada as an implementation language for knowledge based systems
Debates about the selection of programming languages often produce cultural collisions that are not easily resolved. This is especially true in the case of Ada and knowledge based programming. The construction of programming tools provides a desirable alternative for resolving the conflict
Virtual Machine Support for Many-Core Architectures: Decoupling Abstract from Concrete Concurrency Models
The upcoming many-core architectures require software developers to exploit
concurrency to utilize available computational power. Today's high-level
language virtual machines (VMs), which are a cornerstone of software
development, do not provide sufficient abstraction for concurrency concepts. We
analyze concrete and abstract concurrency models and identify the challenges
they impose for VMs. To provide sufficient concurrency support in VMs, we
propose to integrate concurrency operations into VM instruction sets.
Since there will always be VMs optimized for special purposes, our goal is to
develop a methodology to design instruction sets with concurrency support.
Therefore, we also propose a list of trade-offs that have to be investigated to
advise the design of such instruction sets.
As a first experiment, we implemented one instruction set extension for
shared memory and one for non-shared memory concurrency. From our experimental
results, we derived a list of requirements for a full-grown experimental
environment for further research
Backtracking in generalized control settings
Journal ArticleBacktracking is a powerful conceptual and practical technique in programming. However, its application in general has been limited to global control over recursive programs. In this paper we explore through several examples the coherence and utility of applying backtracking in more general control settings, notably coroutine environments. The examples include: (i) a dual tree walk program using coroutine-managed backtracking subsystems, (ii) a context-free language intersection tester using bi-level hierarchical backtracking, and (iii) a minimizing computer job scheduler using backtracking in a simulation language setting. Full programs are given for each example, expressed in a PASCAL extension offering both coroutines and nondeterministic control
An interpreter for Parallel Prolog, a study and implementation
In April 1982, a new institute named ICOT (Institute for New Generation Computer Technology ) was created in Japan. The institute was to support the FGCS ( Fifth Generation Computer Systems ) project. The project is a tremendous effort to enter the fifth generation of computing. The idea is to have a Logic Programming Language as a base language for the project. The goal is to develop basic computer technology to build an intelligent computer system and its prototype which will have an inference function and an intelligent interface function. [18] The inference machine to be developed will be a parallel Logic Programming Machine consisting of hundreds of processing elements, a structured memory and a network element. Assuming that the technology can provide us with a multiprocessor capable of supporting the execution of several procedures or processes in parallel, the problem is to build an interpreter for Concurrent Prolog called TCP (Toy Concurrent Prolog). TCP is to be implemented on a single processor with simulated con currency. The implementation will provide some program annotation schemes to make communication between concurrent processes possible
- …