Results 1 
8 of
8
Inductive Graphs and Functional Graph Algorithms
, 2001
"... We propose a new style of writing graph algorithms in functional languages which is based on an alternative view of graphs as inductively defined data types. We show how this graph model can be implemented efficiently, and then we demonstrate how graph algorithms can be succinctly given by recursive ..."
Abstract

Cited by 16 (2 self)
 Add to MetaCart
We propose a new style of writing graph algorithms in functional languages which is based on an alternative view of graphs as inductively defined data types. We show how this graph model can be implemented efficiently, and then we demonstrate how graph algorithms can be succinctly given by recursive function definitions based on the inductive graph view. We also regard this as a contribution to the teaching of algorithms and data structures in functional languages since we can use the functionalstyle graph algorithms instead of the imperative algorithms that are dominant today. Keywords: Graphs in Functional Languages, Recursive Graph Algorithms, Teaching Graph Algorithms in Functional Languages
Memo Functions, Polytypically!
 Proceedings of the 2nd Workshop on Generic Programming, Ponte de
, 2000
"... . This paper presents a polytypic implementation of memo functions that are based on digital search trees. A memo function can be seen as the composition of a tabulation function that creates a memo table and a lookup function that queries the table. We show that tabulation can be derived from ..."
Abstract

Cited by 13 (5 self)
 Add to MetaCart
. This paper presents a polytypic implementation of memo functions that are based on digital search trees. A memo function can be seen as the composition of a tabulation function that creates a memo table and a lookup function that queries the table. We show that tabulation can be derived from lookup by inverse function construction. The type of memo tables is dened by induction on the structure of argument types and is parametric with respect to the result type of memo functions. A memo table for a xed argument type is then a functor and lookup and tabulation are natural isomorphisms. We provide simple polytypic proofs of these properties. 1 Introduction A memo function [11] is like an ordinary function except that it caches previously computed values. If it is applied a second time to a particular argument, it immediately returns the cached result, rather than recomputing it. For storing arguments and results a memo function internally employs an index structure, the ...
Combining Testing and Proving in Dependent Type Theory
 16th International Conference on Theorem Proving in Higher Order Logics (TPHOLs 2003
, 2003
"... We extend the proof assistant Agda/Alfa for dependent type theory with a modi ed version of Claessen and Hughes' tool QuickCheck for random testing of functional programs. In this way we combine testing and proving in one system. Testing is used for debugging programs and speci cations before ..."
Abstract

Cited by 13 (1 self)
 Add to MetaCart
We extend the proof assistant Agda/Alfa for dependent type theory with a modi ed version of Claessen and Hughes' tool QuickCheck for random testing of functional programs. In this way we combine testing and proving in one system. Testing is used for debugging programs and speci cations before a proof is attempted. Furthermore, we demonstrate by example how testing can be used repeatedly during proof for testing suitable subgoals. Our tool uses testdata generators which are de ned inside Agda/Alfa. We can therefore use the type system to prove properties about them, in particular surjectivity stating that all possible test cases can indeed be generated.
A.: A tutorial on specifying data structures
 in Maude (2004) Presented at PROLE’04
"... This tutorial describes the equational specification of a series of typical data structures in Maude. We start with the wellknown stacks, queues, and lists, to continue with binary and search trees. Not only are the simple versions considered but also advanced ones such as AVL and 234 trees. The ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
This tutorial describes the equational specification of a series of typical data structures in Maude. We start with the wellknown stacks, queues, and lists, to continue with binary and search trees. Not only are the simple versions considered but also advanced ones such as AVL and 234 trees. The operator attributes available in Maude allow the specification of data based on constructors that satisfy some equational properties, like concatenation of lists which is associative and has the empty list as identity, as opposed to the free constructors available in other functional programming languages. Moreover, the expressive version of equational logic in which Maude is based, namely membership equational logic, allows the faithful specification of types whose data are defined not only by means of constructors, but also by the satisfaction of additional properties, like sorted lists or search trees. In the second part of the paper we describe the use of an inductive theorem prover, the ITP, which itself is developed and integrated in Maude by means of the powerful metalevel and metalanguage features offered by the latter, to prove properties of the data structures. This is work in progress because the ITP is still under development and, as soon as the data gets a bit complex, the proof of their properties gets even more complex. Keywords: Data structures, algebraic specification, membership equational logic, Maude, inductive theorem proving. 1
Methods for the prevention, detection and removal of software security vulnerabilities
 Proceedings of the 42nd Annual Southeast Regional Conference
, 2004
"... Over the past decade, the need to build secure software has become a dominant goal in software development. Consequently, software researchers and practitioners have identified ways that malicious users can exploit software and how developers can fix the vulnerabilities. They have also built a varie ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Over the past decade, the need to build secure software has become a dominant goal in software development. Consequently, software researchers and practitioners have identified ways that malicious users can exploit software and how developers can fix the vulnerabilities. They have also built a variety of source code security checking software applications to partially automate the task of performing a security analysis of a program. Although great advances have been made in this area, the core problem of how the security vulnerabilities occur still exists. An answer to this problem could be a paradigm shift from imperative to functional programming techniques. This may hold the key to removing software vulnerabilities altogether.
A Functional Design Framework for Genetic Algorithms
"... One of the advantages of functional languages is the ability to use higherorder functions to guide the design of certain classes of algorithms. This paper is concerned with genetic algorithms (GAs) and their application to the solution of the single row routing (SRR) problem which is an important p ..."
Abstract
 Add to MetaCart
One of the advantages of functional languages is the ability to use higherorder functions to guide the design of certain classes of algorithms. This paper is concerned with genetic algorithms (GAs) and their application to the solution of the single row routing (SRR) problem which is an important problem in the design of multilayer printed circuit boards (MPCBs). The paper presents a framework which allows highlevel modelling of a GA solution as well as providing an executable specification which can be used to refine the parameters of the GA search. This is a first step towards "intelligent" GA design interfaces and efficient implementations possibly based on parallel evaluation. 1 INTRODUCTION One of the advantages of functional programming is the ability to model algorithmic design strategies through highorder functions which provide the programmer with a general framework for the definition of instance algorithms. Such frameworks have been presented [5] for several simple stra...
Assertions, Assertive Coding Application to Sudoku Puzzles
"... We show how to specify preconditions, postconditions, assertions and invariants, and how to wrap these around functional code or functional imperative code. We illustrate the use of this for writing programs for automated testing of code that is wrapped in appropriate assertions. We call this assert ..."
Abstract
 Add to MetaCart
We show how to specify preconditions, postconditions, assertions and invariants, and how to wrap these around functional code or functional imperative code. We illustrate the use of this for writing programs for automated testing of code that is wrapped in appropriate assertions. We call this assertive coding. An assertive version of a function f is a function f ′ that behaves exactly like f as long as f complies with its specification, and aborts with error otherwise. This is a much stronger sense of selftesting than what is called selftesting code (code with builtin tests) in test driven development. The lecture gives examples of how to use (inefficient) specification code to test (efficient) implementation code, and how to turn assertive code into production code by replacing the selftesting versions of the assertion wrappers by selfdocumenting versions that skip the assertion tests. We end with a demonstration of the use of formal methods in developing a sudoku solver. Module Declaration module Week5