Results 1  10
of
16
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 26 (0 self)
 Add to MetaCart
. 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
 In IFIP Conference on Hardware Description Languages and their Applications
, 1995
"... 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 19 (2 self)
 Add to MetaCart
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. Keywords: Formal methods; Design by transformation; Integration of formal systems med CAD. 1 INTRODUCTION 1 1 Introduction This paper describes a computerbased system, known as TRuby [12], for designing VLSI circuits starting from a highlevel, mathematical specification of their behaviour: A circuit is described by a binary relation between appropriate, possibly complex domains of values, and simple rela...
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
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
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
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 Representation Changers Functionally
 Journal of Functional Programming
, 1993
"... A representation changer is a function that converts a concrete representation of an abstract value into a different concrete representation of that value. Many useful functions can be recognised as representation changers; examples include compilers, and arithmetic functions such as addition and mu ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
A representation changer is a function that converts a concrete representation of an abstract value into a different concrete representation of that value. Many useful functions can be recognised as representation changers; examples include compilers, and arithmetic functions such as addition and multiplication. Functions that can be specified as the right inverse of other functions are special cases of representation changers. In recent years, a number of authors have used a relational calculus to derive representation changers from their specifications. In this paper we show that the generality of relations is not essential, and representation changers can be derived within the more basic setting of functional programming. We illustrate our point by deriving a carrysave adder and a baseconverter, two functions which have previously been derived relationally. 1 Introduction In the calculational approach to programming the aim is to derive programs from their specifications by a p...
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
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...’
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
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
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 derivation ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
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...
An Embedding of Ruby in Isabelle
 In McRobbie, Slaney [23
, 1996
"... . This paper describes a semantical embedding of the relation based language Ruby in ZermeloFraenkel set theory (ZF) using the Isabelle theorem prover. A small subset of Ruby, called Pure Ruby, is embedded as a conservative extension of ZF and many useful structures used in connection with VLSI ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
. This paper describes a semantical embedding of the relation based language Ruby in ZermeloFraenkel set theory (ZF) using the Isabelle theorem prover. A small subset of Ruby, called Pure Ruby, is embedded as a conservative extension of ZF and many useful structures used in connection with VLSI design are defined in terms of Pure Ruby. The inductive package of Isabelle is used to characterise the Pure Ruby subset to allow proofs to be performed by structural induction over the Pure Ruby elements. 1 Introduction Ruby [5] is a relation based language intended for specifying VLSI circuits. A circuit is described by a binary relation between appropriate, possibly complex domains of values, and simple relations can be combined into more complex relations by a variety of combining forms. The Ruby relations generate an algebra which defines a set of equivalences. These are used in the Ruby design process which typically involves a transformation from a "specification" to an "impleme...