Results 1  10
of
21
Designing Arithmetic Circuits by Refinement in Ruby
 In Proc. Second International Conference on Mathematics of Program Construction, Lecture Notes in Computer Science
, 1992
"... . This paper presents in some detail the systematic derivation of a static bitlevel parallel algorithm to implement multiplication of integers, that is to say one which might be implemented as an electronic circuit. The circuit is well known, but the derivation shows that its design can be seen as ..."
Abstract

Cited by 28 (0 self)
 Add to MetaCart
(Show Context)
. This paper presents in some detail the systematic derivation of a static bitlevel parallel algorithm to implement multiplication of integers, that is to say one which might be implemented as an electronic circuit. The circuit is well known, but the derivation shows that its design can be seen as the consequence of decisions made (and explained) in terms of the abstract algorithm. The systematic derivation serves both as an explanation of the circuit, and as a demonstration that it is correct `by construction'. We believe that the technique is applicable to a wide range of similar algorithms. 1 Introduction We advocate a style of `design by calculation' for the very finegrained parallel algorithms that are implemented as regular arrays of electronic circuits. The design of such circuits is particularly difficult because the implementation medium imposes severe constraints on what is possible and what is reasonably efficient. In consequence the details of the final implementation ha...
The TRuby Design System
, 1997
"... This paper describes the TRuby system for designing VLSI circuits, starting from formal specifications in which they are described in terms of relational abstractions of their behaviour. The design process involves correctnesspreserving transformations based on proved equivalences between relation ..."
Abstract

Cited by 22 (2 self)
 Add to MetaCart
(Show Context)
This paper describes the TRuby system for designing VLSI circuits, starting from formal specifications in which they are described in terms of relational abstractions of their behaviour. The design process involves correctnesspreserving transformations based on proved equivalences between relations, together with the addition of constraints. A class of implementable relations is defined. The tool enables such relations to be simulated or translated into a circuit description in VHDL. The design process is illustrated by the derivation of a circuit for 2dimensional convolution.
Between Functions and Relations in Calculating Programs
, 1992
"... This thesis is about the calculational approach to programming, in which one derives programs from specifications. One such calculational paradigm is Ruby, the relational calculus developed by Jones and Sheeran for describing and designing circuits. We identify two shortcomings with derivations made ..."
Abstract

Cited by 15 (4 self)
 Add to MetaCart
(Show Context)
This thesis is about the calculational approach to programming, in which one derives programs from specifications. One such calculational paradigm is Ruby, the relational calculus developed by Jones and Sheeran for describing and designing circuits. We identify two shortcomings with derivations made using Ruby. The first is that the notion of a program being an implementation of a specification has never been made precise. The second is to do with types. Fundamental to the use of type information in deriving programs is the idea of having types as special kinds of programs. In Ruby, types are partial equivalence relations (pers). Unfortunately, manipulating some formulae involving types has proved difficult within Ruby. In particular, the preconditions of the `induction' laws that are much used within program derivation often work out to be assertions about types; such assertions have typically been verified either by informal arguments or by using predicate calculus, rather than by ap...
Transformational Rewriting with Ruby
 In CHDL '93
, 1993
"... This paper describes a tool for use in userdirected synthesis of circuits specified using the relational VLSI description language Ruby. The synthesis method is based on transformational rewriting of Ruby terms in accordance with previously defined term equivalences. The tool permits the introducti ..."
Abstract

Cited by 13 (8 self)
 Add to MetaCart
(Show Context)
This paper describes a tool for use in userdirected synthesis of circuits specified using the relational VLSI description language Ruby. The synthesis method is based on transformational rewriting of Ruby terms in accordance with previously defined term equivalences. The tool permits the introduction of constraints into the specification, thus enhancing the usefulness of the rewrite system in relation to simple rewriting. Keyword Codes: B.7.2, D.1.1. Keywords: Integrated Circuits, Design Aids; Applicative Programming. 1. Introduction Ruby [3] is a language intended for specifying VLSI circuits in terms of relational abstractions of their behaviour. A circuit is described by a binary relation, and the language permits simple relations to be composed into more complex ones by the use of a variety of combining forms which are higherorder functions. Similarly, simple combining forms can be composed into more complex ones, as in conventional languages for functional programming. The basi...
Using a Language of Functions and Relations for VLSI Specification
 In Functional programming and Computer Architecture, FPCA'95
, 1995
"... This paper describes the TRuby language for specifying VLSI circuits in terms of relational abstractions of their behaviour. The language is based on a typed lambda calculus with a type system closely related to that of Edinburgh LF. Terms in the language may have simple, nonparameterised types or ..."
Abstract

Cited by 7 (4 self)
 Add to MetaCart
(Show Context)
This paper describes the TRuby language for specifying VLSI circuits in terms of relational abstractions of their behaviour. The language is based on a typed lambda calculus with a type system closely related to that of Edinburgh LF. Terms in the language may have simple, nonparameterised types or types which are constructed from other types, possibly together with terms. The dependent types which can be constructed in this way are useful for describing parameterised regular structures which commonly appear in VLSI circuits. The language forms the basis for a tool which permits term rewriting in a userdirected transformational style according to a set of proved term equivalences. Terms which describe causal relations may then be translated into a VLSI specification in a standard VLSI description language. The rewriting process is illustrated by the derivation of a relation describing a circuit for 2dimensional convolution. 1 Introduction Ruby [3] is a language intended for specif...
Back to Basics: Deriving Representations Changers Without Relations
, 1994
"... A representation changer is a function that can be specified in a particular way in terms of two other functions. Examples of representation changers include binary addition and multiplication, base conversion, and compilers. There has been much recent work in using a relational language, namely ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
A representation changer is a function that can be specified in a particular way in terms of two other functions. Examples of representation changers include binary addition and multiplication, base conversion, and compilers. There has been much recent work in using a relational language, namely Jones and Sheerans' Ruby, to derive representation changers from their specifications using equational reasoning. In this paper
A Theory of Program Refinement
, 1998
"... We give a canonical program refinement calculus based on the lambda calculus and classical firstorder predicate logic, and study its proof theory and semantics. The intention is to construct a metalanguage for refinement in which basic principles of program development can be studied. The idea is t ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
(Show Context)
We give a canonical program refinement calculus based on the lambda calculus and classical firstorder predicate logic, and study its proof theory and semantics. The intention is to construct a metalanguage for refinement in which basic principles of program development can be studied. The idea is that it should be possible to induce a refinement calculus in a generic manner from a programming language and a program logic. For concreteness, we adopt the simplytyped lambda calculus augmented with primitive recursion as a paradigmatic typed functional programming language, and use classical firstorder logic as a simple program logic. A key feature is the construction of the refinement calculus in a modular fashion, as the combination of two orthogonal extensions to the underlying programming language (in this case, the simplytyped lambda calculus). The crucial observation is that a refinement calculus is given by extending a programming language to allow indeterminate expressions (or ‘stubs’) involving the construction ‘some program x such that P ’. Factoring this into ‘some x...’
A Relational Derivation of a Functional Program
 In Proc. STOP Summer School on Constructive Algorithmics, Ameland, The
, 1992
"... This article is an introduction to the use of relational calculi in deriving programs. We present a derivation in a relational language of a functional program that adds one bit to a binary number. The resulting program is unsurprising, being the standard `column of halfadders', but the deriv ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
(Show Context)
This article is an introduction to the use of relational calculi in deriving programs. We present a derivation in a relational language of a functional program that adds one bit to a binary number. The resulting program is unsurprising, being the standard `column of halfadders', but the derivation illustrates a number of points about working with relations rather than functions. 1 Ruby Our derivation is made within the relational calculi developed by Jones and Sheeran [14, 15]. Their language, called Ruby , is designed specifically for the derivation of `hardwarelike' programs that denote finite networks of simple primitives. Ruby has been used to derive a number of different kinds of hardwarelike programs [13, 22, 23, 16]. Programs in Ruby are built piecewise from smaller programs using a simple set of combining forms. Ruby is not meant as a programming language in its own right, but as a tool for developing and explaining algorithms. Fundamental to Ruby is the use of terse not...
Formalising Ruby in Isabelle ZF
 University of Cambridge
, 1995
"... This paper describes a formalisation of the relation based language Ruby in ZermeloFraenkel set theory (ZF) using the Isabelle theorem prover. We showhowavery small subset of Ruby, called Pure Ruby, easily can be formalised as a conservative extension of ZF and how many useful structures used in co ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
(Show Context)
This paper describes a formalisation of the relation based language Ruby in ZermeloFraenkel set theory (ZF) using the Isabelle theorem prover. We showhowavery small subset of Ruby, called Pure Ruby, easily can be formalised as a conservative extension of ZF and how many useful structures used in connection with VLSI design can be de ned from Pure Ruby. The inductive package of Isabelle is used to characterise the Pure Ruby subset by an inductive de nition, to allow proofs to be performed by structural induction over the Pure Ruby elements. Finally we demonstrate how various kinds of proofs may be automated and the explicit type checking of ZF hidden by the de nition of specialised tactics. 1
Functional Programming with Relations
 IN PROC. THIRD GLASGOW WORKSHOP ON FUNCTIONAL PROGRAMMING, WORKSHOPS IN COMPUTING
, 1990
"... While programming in a relational framework has much to offer over the functional style in terms of expressiveness, computing with relations is less efficient, and more semantically troublesome. In this paper we propose a novel blend of the functional and relational styles. We identify a class of ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
While programming in a relational framework has much to offer over the functional style in terms of expressiveness, computing with relations is less efficient, and more semantically troublesome. In this paper we propose a novel blend of the functional and relational styles. We identify a class of causal relations , which inherit some of the bidirectionality properties of relations, but retain the efficiency and semantic foundations of the functional style.