Results 1  10
of
16
Pattern matching with dependent types
 In Proceedings of the Workshop on Types for Proofs and Programs
, 1992
"... ..."
Hume: A DomainSpecific Language for RealTime Embedded Systems
 In Proc. Conf. Generative Programming and Component Engineering (GPCE ’03), Lecture Notes in Computer Science
, 2003
"... This paper describes Hume: a novel domainspecific language whose purpose is to explore the expressibility/costability spectrum in resourceconstrained systems, such as realtime embedded or control systems. ..."
Abstract

Cited by 71 (38 self)
 Add to MetaCart
This paper describes Hume: a novel domainspecific language whose purpose is to explore the expressibility/costability spectrum in resourceconstrained systems, such as realtime embedded or control systems.
Dependently Typed Functional Programs and their Proofs
, 1999
"... Research in dependent type theories [ML71a] has, in the past, concentrated on its use in the presentation of theorems and theoremproving. This thesis is concerned mainly with the exploitation of the computational aspects of type theory for programming, in a context where the properties of programs ..."
Abstract

Cited by 70 (13 self)
 Add to MetaCart
Research in dependent type theories [ML71a] has, in the past, concentrated on its use in the presentation of theorems and theoremproving. This thesis is concerned mainly with the exploitation of the computational aspects of type theory for programming, in a context where the properties of programs may readily be specified and established. In particular, it develops technology for programming with dependent inductive families of datatypes and proving those programs correct. It demonstrates the considerable advantage to be gained by indexing data structures with pertinent characteristic information whose soundness is ensured by typechecking, rather than human effort. Type theory traditionally presents safe and terminating computation on inductive datatypes by means of elimination rules which serve as induction principles and, via their associated reduction behaviour, recursion operators [Dyb91]. In the programming language arena, these appear somewhat cumbersome and give rise to unappealing code, complicated by the inevitable interaction between case analysis on dependent types and equational reasoning on their indices which must appear explicitly in the terms. Thierry Coquand’s proposal [Coq92] to equip type theory directly with the kind of
About Charity
, 1992
"... Charity is a categorical programming language based on distributive categories (in the sense of Schanuel and Lawvere) with strong datatypes (in the sense of Hagino). Distributive categories come with a term logic which can express most standard programs; and they are fundamental to computer science ..."
Abstract

Cited by 22 (0 self)
 Add to MetaCart
Charity is a categorical programming language based on distributive categories (in the sense of Schanuel and Lawvere) with strong datatypes (in the sense of Hagino). Distributive categories come with a term logic which can express most standard programs; and they are fundamental to computer science because they permit proof by case analysis and, when strong datatypes are introduced, proof by structural induction. Charity is functional and polymorphic in style, and is strongly normalizing. As a categorical programming language it provides a unique marriage of computer science and mathematical thought. The above aspects are particularly important for the production of verified programs as the naturality of morphisms gives us "theorems for free", termination proofs are not required, and mathemathical specifications can be used. 1 Introduction Functional and logic programming languages have reduced the gap between theory and implementation by reducing the notational movement from mathema...
A Dependently Typed Framework for Static Analysis of Program Execution Costs
 In Revised selected papers from IFL 2005: 17th international workshop on implementation and application of functional languages
, 2005
"... Abstract. This paper considers the use of dependent types to capture information about dynamic resource usage in a static type system. Dependent types allow us to give (explicit) proofs of properties with a program; we present a dependently typed core language ��, and define a framework within this ..."
Abstract

Cited by 13 (9 self)
 Add to MetaCart
Abstract. This paper considers the use of dependent types to capture information about dynamic resource usage in a static type system. Dependent types allow us to give (explicit) proofs of properties with a program; we present a dependently typed core language ��, and define a framework within this language for representing size metrics and their properties. We give several examples of size bounded programs within this framework and show that we can construct proofs of their size bounds within ��. We further show how the framework handles recursive higher order functions and sum types, and contrast our system with previous work based on sized types. 1
FirstOrder Unification by Structural Recursion
, 2001
"... Firstorder unification algorithms (Robinson, 1965) are traditionally implemented via general recursion, with separate proofs for partial correctness and termination. The latter tends to involve counting the number of unsolved variables and showing that this total decreases each time a substitution ..."
Abstract

Cited by 12 (4 self)
 Add to MetaCart
Firstorder unification algorithms (Robinson, 1965) are traditionally implemented via general recursion, with separate proofs for partial correctness and termination. The latter tends to involve counting the number of unsolved variables and showing that this total decreases each time a substitution enlarges the terms. There are many such proofs in the literature, for example, (Manna & Waldinger, 1981; Paulson, 1985; Coen, 1992; Rouyer, 1992; Jaume, 1997; Bove, 1999). This paper
Programming with inductive and coinductive types
, 1992
"... Abstract We look at programming with inductive and coinductive datatypes, which are inspired theoretically by initial algebras and final coalgebras, respectively. A predicative calculus which incorporates these datatypes as primitive constructs is presented. This calculus allows reduction sequence ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
Abstract We look at programming with inductive and coinductive datatypes, which are inspired theoretically by initial algebras and final coalgebras, respectively. A predicative calculus which incorporates these datatypes as primitive constructs is presented. This calculus allows reduction sequences which are significantly more efficient for two dual classes of common programs than do previous calculi using similar primitives. Several techniques for programming in this calculus are illustrated with numerous examples. A short survey of related work is also included.
Towards formally verifiable resource bounds for realtime embedded systems
 ACM SIGBED Review— Special issues
, 2006
"... This paper describes ongoing work aimed at the construction of formal cost models and analyses that are capable of producing verifiable guarantees of resource usage (space, time and ultimately power consumption) in the context of realtime embedded systems. Our work is conducted in terms of the doma ..."
Abstract

Cited by 7 (3 self)
 Add to MetaCart
This paper describes ongoing work aimed at the construction of formal cost models and analyses that are capable of producing verifiable guarantees of resource usage (space, time and ultimately power consumption) in the context of realtime embedded systems. Our work is conducted in terms of the domainspecific language Hume, a language that combines functional programming for computations with finitestate automata for specifying reactive systems. We describe an approach in which highlevel information derived from sourcecode analysis can be combined with worstcase execution time information obtained from abstract interpretation of lowlevel binary code. This abstract interpretation on the machinecode level is capable of dealing with complex architectural effects including cache and pipeline properties in an accurate way. It has been applied to several largescale commercial safetycritical systems, including the flight control system for the Airbus A380. 1
Exploiting Purely Functional Programming to Obtain Bounded Resource Behaviour: the Hume Approach
 In Central European Summer School on Functional Programming
, 2005
"... Abstract. This chapter describes Hume: a functionallybased language for programming with bounded resource usage, including time and space properties. The purpose of the Hume language design is to explore the expressibility/costability spectrum in resourceconstrained systems, such as realtime embe ..."
Abstract

Cited by 6 (5 self)
 Add to MetaCart
Abstract. This chapter describes Hume: a functionallybased language for programming with bounded resource usage, including time and space properties. The purpose of the Hume language design is to explore the expressibility/costability spectrum in resourceconstrained systems, such as realtime embedded or control systems. It is unusual in being based on a combination of λcalculus and finite state machine notions, rather than the more usual propositional logic, or flat finitestatemachine models. The use of a strict, purely functional programming notation allows the construction of a strong cost model for expressions, which can then be embedded into a simple cost model for processes. In this chapter, we introduce Hume, describe the Hume Abstract Machine implementation, and show how a highlevel cost model can be constructed that relates costs from the abstract machine to Hume source programs. We illustrate our approach with an example adapted from the literature: a simple vending machine controller. 1
Reactive Functional Programming
 Programming Concepts and Methods (PROCOMET 98). ChapmanHall
, 1998
"... Reactive systems respond to concurrent, possibly unsynchronized streams of input events. Programming reactive systems is challenging without language support for eventtriggered actions. It is even more challenging to reason about reactive systems. This paper explores a new conceptual basis for appl ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
Reactive systems respond to concurrent, possibly unsynchronized streams of input events. Programming reactive systems is challenging without language support for eventtriggered actions. It is even more challenging to reason about reactive systems. This paper explores a new conceptual basis for applying functional programming techniques to the design and formal veri#cation of reactive systems. The mathematical foundation for this approach is based upon signature coalgebras and derived proof rules for coinduction. The concepts are illustrated with an example that has been used with the language Esterel. 1 Introduction Reactive systems are characterized by sequences of historydetermined reactions to external events. It is known that a nonstrict functional programming language can provide a suitable linguistic vehicle for programming reactive systems because streams, modeling temporal sequences of values, can be represented. It is necessary to represent more than streams, however. Cur...