Results 11  20
of
66
Formal Verification of Iterative Algorithms in Microprocessors
, 2000
"... Contemporary microprocessors implement many iterative algorithms. For example, the frontend of a microprocessor repeatedly fetches and decodes instructions while updating internal state such as the program counter; floatingpoint circuits perform divide and square root computations iteratively. Ite ..."
Abstract

Cited by 8 (0 self)
 Add to MetaCart
(Show Context)
Contemporary microprocessors implement many iterative algorithms. For example, the frontend of a microprocessor repeatedly fetches and decodes instructions while updating internal state such as the program counter; floatingpoint circuits perform divide and square root computations iteratively. Iterative algorithms often have complex implementations because of performance optimizations like result speculation, retiming and circuit redundancies. Verifying these iterative circuits against highlevel specifications requires two steps: reasoning about the algorithm itself and verifying the implementation against the algorithm. In this paper we discuss the verification of four iterative circuits from Intel microprocessor designs. These verifications were performed using Forte, a custombuilt verification system; we discuss the Forte features necessary for our approach. Finally, we discuss how we maintained these proofs in the face of evolving design implementations.
Towards SPARE Time: A New Taxonomy and Toolkit of Keyword Pattern Matching Algorithms
, 2003
"... We present a new taxonomy and toolkit of keyword pattern matching algorithms. The new taxonomy is an extension of a prior taxonomy of such algorithms. It includes a number of algorithms (including factor and factor oraclebased and bitparallel prefixbased pattern matching algorithms) that have be ..."
Abstract

Cited by 7 (5 self)
 Add to MetaCart
We present a new taxonomy and toolkit of keyword pattern matching algorithms. The new taxonomy is an extension of a prior taxonomy of such algorithms. It includes a number of algorithms (including factor and factor oraclebased and bitparallel prefixbased pattern matching algorithms) that have been published or received a lot of attention in the last decade. Based on the new taxonomy, we developed a pattern matching toolkit. This toolkit is a revision and extension of the SPARE Parts toolkit that had been developed based on the original taxonomy. We present the architecture of the new toolkit, which is named SPARE Time. Samenvatting We presenteren een nieuwe taxonomie en toolkit van algorithmen voor keyword pattern matching. De nieuwe taxonomie vormt een uitbreiding van een eerdere taxonomie van zulke algorithmen. Ze bevat een aantal algorithmen (waaronder algorithmen gebaseerd op factoren en factor oracles en bitparallelle algorithmen gebaseerd op prefixen) die in de afgelopen tien jaar gepubliceerd zijn of veel aandacht gekregen hebben.
Interpreter Prototypes From Formal Language Definitions
, 1993
"... Denotational semantics is now used widely for the formal definition of programming languages but there is a lack of appropriate tools to support language development. General purpose language implementation systems are oriented to syntax with poor support for semantics. Specialised denotational sema ..."
Abstract

Cited by 7 (4 self)
 Add to MetaCart
Denotational semantics is now used widely for the formal definition of programming languages but there is a lack of appropriate tools to support language development. General purpose language implementation systems are oriented to syntax with poor support for semantics. Specialised denotational semantics based systems correspond closely to the formalism but are rendered inflexible for language experimentation by their monolithic multiple stages Exploratory language development with formal definitions is better served by a unitary notation, encompassing syntax and semantics, which is close to but simpler than denotational semantics. Interactive implementation of the notation then facilitates language investigation through the direct execution of a formal definition as an interpreter for the defined language. This thesis presents Navel, a runtime typed, applicative order, pure functional programming language with integrated context free grammar rules. Navel has been used to develop prot...
A Calculus for Imperative Programs: Formalization and Implementation
"... Abstract—As an extension of our previous work on imperative program verification, we present a formalism for handling the total correctness of While loops in imperative programs, consisting in functional based definitions of the verification conditions for both partial correctness and for terminatio ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
(Show Context)
Abstract—As an extension of our previous work on imperative program verification, we present a formalism for handling the total correctness of While loops in imperative programs, consisting in functional based definitions of the verification conditions for both partial correctness and for termination. A specific feature of our approach is the generation of verification conditions as first order formulae, including the termination condition which is expressed as an induction principle. Keywordsprogram analysis and verification, symbolic execution, theorem proving I.
A recursion theorem for predicate transformers on inductive data types
 Information Processing Letters
, 1994
"... catamorphism, predicate transformer, higher types, lax exponent. ..."
Abstract

Cited by 4 (4 self)
 Add to MetaCart
(Show Context)
catamorphism, predicate transformer, higher types, lax exponent.
Program Calculation in Coq
 In Thirteenth International Conference on Algebraic Methodology And Software Technology (AMAST2010), LNCS 6486
, 2010
"... Abstract. Program calculation, being a programming technique that derives programs from specification by means of formula manipulation, is a challenging activity. It requires human insights and creativity, and needs systems to help human to focus on clever parts of the derivation by automating tedio ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
(Show Context)
Abstract. Program calculation, being a programming technique that derives programs from specification by means of formula manipulation, is a challenging activity. It requires human insights and creativity, and needs systems to help human to focus on clever parts of the derivation by automating tedious ones and verifying correctness of transformations. Different from many existing systems, we show in this paper that Coq, a popular theorem prover, provides a cheap way to implement a powerful system to support program calculation, which has not been recognized so far. We design and implement a set of tactics for the Coq proof assistant to help the user to derive programs by program calculation and to write proofs in calculational form. The use of these tactics is demonstrated through program calculations in Coq based on the theory of lists. 1
Separation of Correctness and Complexity in Algorithm Design
, 1993
"... this paper we propose a new approach to the design of algorithms. This approach is based on the view that all algorithms are composed of a computation and a control component, and that these components can be designed separately. The computation component is responsible for the correctness of an alg ..."
Abstract

Cited by 3 (3 self)
 Add to MetaCart
(Show Context)
this paper we propose a new approach to the design of algorithms. This approach is based on the view that all algorithms are composed of a computation and a control component, and that these components can be designed separately. The computation component is responsible for the correctness of an algorithm. It embodies the computational knowledge about a problem domain that is needed to solve the corresponding problem. The control component governs complexity aspects of the solution method by directing the usage of the computational knowledge. This bisection allows the problem of how to construct an algorithm to be split into two smaller problems: "What are the elementary units of computational knowledge for the problem at hand?" and "In what order should these units be used to (efficiently) obtain a solution." This way, the concerns of correctness and complexity are separated. We assert that there are many advantages in separating correctness and complexity in algorithm design. Hence, we examine properties of programming formalisms that influence the possibility of separating the design of the computation and control components of an algorithm.
An extension of the program derivation format
 Programming Concepts and Methods (PROCOMET ’98). Chapman
, 1998
"... AvG159/AB61 1 A convention is proposed for embedding program statements into Dijkstra’s calculus, with the aim of simplifying the stepwise construction of programs. ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
AvG159/AB61 1 A convention is proposed for embedding program statements into Dijkstra’s calculus, with the aim of simplifying the stepwise construction of programs.
A Complete Invariant Generation Approach for Psolvable Loops
"... We present an algorithm for generating all polynomial invariants of Psolvable loops with assignments and nested conditionals. We prove termination of our algorithm. The proof relies on showing that the dimensions of the prime ideals from the minimal decomposition of the ideals generated at an iter ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
(Show Context)
We present an algorithm for generating all polynomial invariants of Psolvable loops with assignments and nested conditionals. We prove termination of our algorithm. The proof relies on showing that the dimensions of the prime ideals from the minimal decomposition of the ideals generated at an iteration of our algorithm either remain the same or decrease at the next iteration of the algorithm. Our experimental results report that our method takes less iterations and/or time than other polynomial invariant generation techniques.