Results 1 -
5 of
5
How to prove properties of recursively defined circuits using Stalmarck's method
, 1998
"... . We present a technique for proving properties of recursively defined circuits using Stalmarck's method. We consider instances of circuits defined according to a particular inductive scheme and show how extra definitions of fresh propositional variables can be added automatically in such a way that ..."
Abstract
-
Cited by 6 (2 self)
- Add to MetaCart
. We present a technique for proving properties of recursively defined circuits using Stalmarck's method. We consider instances of circuits defined according to a particular inductive scheme and show how extra definitions of fresh propositional variables can be added automatically in such a way that an automatic theorem prover is able to find short proofs of correctness of the resulting circuits. We show how regular circuits, such as adders and multipliers, fit into the inductive scheme. 1 Introduction Stalmarck's method is an effective algorithm for proving formulas in propositional logic extended with some arithmetic. The method was patented by Stalmarck in 1992 and has since been used to verify complex systems in many real industrial projects, particularly in the area of railway signalling [4]. Stalmarck defines a notion of proof hardness, the number of simultaneously free assumptions in a proof. It turns out that many real verification problems have easy proofs (hardness 0 or 1), a...
Compositional Logic Programming
- In Proceedings of the JICSLP'96 post-conference workshop: Multi-paradigm logic programming, Report 96-28. Technische Universitat
, 2000
"... Relational program derivation has gathered momentum over the last decade with the development of many specification logics. However, before such relational specifications can be executed in existing programming languages, they must be carefully phrased to respect the evaluation order of the langu ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
Relational program derivation has gathered momentum over the last decade with the development of many specification logics. However, before such relational specifications can be executed in existing programming languages, they must be carefully phrased to respect the evaluation order of the language. In turn, this requirement inhibits the rapid prototyping of specifications in a relational notation. The aim of this thesis is to bridge the gap between the methodology and practice of relational program derivation by realising a compositional style of logic programming that permits specifications to be phrased naturally and executed declaratively.
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 half--adders', 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 half--adders', 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 `hardware--like' programs that denote finite networks of simple primitives. Ruby has been used to derive a number of different kinds of hardware--like 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...
Embedding a Hardware Description Language in a Functional Meta-Programming Language
"... Abstract. General purpose functional languages such as Haskell, have been widely used as host languages for the embedding of domain specific languages. In particular, various hardware description languages have been successfully embedded in Haskell and other functional languages. More recently, meta ..."
Abstract
- Add to MetaCart
Abstract. General purpose functional languages such as Haskell, have been widely used as host languages for the embedding of domain specific languages. In particular, various hardware description languages have been successfully embedded in Haskell and other functional languages. More recently, meta-programming languages have also started being used for the embedding of such languages, where the meta-language features allow us to access the structure of data objects in a shallow-style embedding, while retaining the characteristics of a deep-embedding. In this paper, we discuss the application of meta-functional languages for the embedding of a hardware description language, based on reFLect, a functional meta-language which provides an alternative approach for embedding a hardware description language by means of built-in reflection features. Through the use of code quotation and pattern matching, we use reFLect to build a framework through which we can access the structure of our circuits by means of reflection. 1
Access to Circuit Generators in Embedded HDLs
"... General purpose functional languages have been widely used as host languages for the embedding of domain specific languages, especially hardware description languages. The embedding approach provides various abstraction techniques, enabling the description of generators for whole families of circuit ..."
Abstract
- Add to MetaCart
General purpose functional languages have been widely used as host languages for the embedding of domain specific languages, especially hardware description languages. The embedding approach provides various abstraction techniques, enabling the description of generators for whole families of circuits, in particular parameterised regular circuits. The twostage language setting that is achieved by means of embedding, provides a means to reason about the generated circuits as data objects within the host language. Nonetheless, these circuit objects lack information about their generators, or about the manner in which these where generated, which can be used for placement and analysis. In this paper, we use reFLect as a functional language with reflection features, to enable us not only to access the circuits, but also the circuit generators. Through the use of code quotation and pattern matching, we propose a framework through which we can access the structure of the circuit in terms of nested blocks that map the generation flow that was followed by the generator. 1

