These proceedings date from the November 2004 workshop held in Munich, and include tropics ranging from theory to formal aspects of functional programming, graphics, visual programming, distributed computing and computer design. Specific papers cover such subjects as proof support for general type classes, generic proofs for combinator-based generic programs, building certifies components within FOCAL, calculating an exceptional machine, generalizing the AUGMENT combinator, a functional programming language that supports typed open programming, experiments with GHC's optimizer, disjoint forms in graphical user interfaces and a graphic functional-dataflow language. Distributed in the US by ISBS. Annotation ©2006 Book News, Inc., Portland, OR (booknews.com)
Die Inhaltsangabe kann sich auf eine andere Ausgabe dieses Titels beziehen.
Hans-Wolfgang Loidl is a research associate in the Theoretical Computer Science group at the Department for Informatics, Ludwig-Maximilians University, Munich.
1 Proof Support for General Type Classes Ron van Kesteren, Marko van Eekelen, Maarten de Mol, 1,
1.1 Introduction,
1.2 Sparkle, 4,
1.3 Preliminaries, 5,
1.4 Structural induction, 7,
1.5 Induction on instances, 8,
1.6 Multiple class constraints, 10,
1.7 Implementation, 14,
1.8 Related and future work, 14,
1.9 Conclusion, 15,
References, 15,
2 Generic Proofs for Combinator-based Generic Programs Fermín Reig, 17,
2.1 Introduction, 17,
2.2 'Boilerplate' combinators as generic functions, 19,
2.3 Generic proofs for 'boilerplate' combinators, 20,
2.4 A proof of the fusion law for gmapT, 21,
2.5 A theorem about occurs, 22,
2.6 A fusion law for everywhere, 25,
2.7 Conclusions and further work, 28,
2.8 Proof of lemma 2.1, 29,
2.9 Proof of lemma 2.2, 29,
2.10 Proof of lemma 2.3, 30,
2.11 Proof of theorem 2.5 (continued), 30,
References, 31,
3 Building certified components within FOCAL Catherine Dubois, Thérèse Hardin, Véronique Viguié Donzeau Gouge, 33,
3.1 Introduction, 33,
3.2 FOCAL requirements and design principles, 34,
3.3 Overview of FOCAL, 35,
3.4 A complete example, 38,
3.5 Compiling, 43,
3.6 Applications, 45,
3.7 Related work, 46,
3.8 Conclusion and future work, 46,
References, 47,
4 Calculating an Exceptional Machine Graham Hutton, Joel Wright, 49,
4.1 Introduction, 49,
4.2 Abstract machines, 50,
4.3 Arithmetic expressions, 51,
4.4 Adding exceptions, 58,
4.5 Further work, 63,
References, 64,
5 Generalizing the AUGMENT Combinator Neil Ghani, Tarmo Uustalu, Varmo Vene, 65,
5.1 Introduction, 65,
5.2 Semantics of FOLD/BUILD, 66,
5.3 The AUGMENT of free monads, 69,
5.4 A generalized AUGMENT combinator, 72,
5.5 Conclusion and future work, 77,
References, 77,
6 Alice Through the Looking Glass Andreas Rossberg, Didier Le Botlan, Guido Tack, Th. Brunklaus, Gert Smolka, 79,
6.1 Introduction, 79,
6.2 Futures, 80,
6.3 Higher-order modules, 83,
6.4 Packages, 84,
6.5 Components, 86,
6.6 Decomposing components, 88,
6.7 Distribution, 89,
6.8 Implementation, 92,
6.9 Related work, 92,
6.10 Outlook, 93,
References, 94,
7 Experiments with GHC's Optimiser László Németh, 97,
7.1 Introduction, 97,
7.2 Contributions of the paper, 98,
7.3 The setup, 98,
7.4 The method, 99,
7.5 Evaluation, 102,
7.6 Related work, 106,
7.7 Conclusions, 107,
References, 108,
8 Disjoint Forms in Graphical User Interfaces Sander Evers, Peter Achten, Rinus Plasmeijer, 113,
8.1 Introduction, 113,
8.2 FunctionalForms summary, 114,
8.3 Combinators for disjoint forms, 116,
8.4 Implementation, 119,
8.5 Safety, 125,
8.6 Related work, 126,
8.7 Conclusions and future work, 126,
References, 127,
9 A Graphic Functional-Dataflow Language Silvia Clerici, Cristina Zoltan, 129,
9.1 Introduction, 129,
9.2 Outline of the NiMo language, 131,
9.3 The NiMo environment, 138,
9.4 Current state and future work, 142,
9.5 Concluding remarks, 143,
References, 144,
Proof Support for General Type Classes
Ron van Kesteren, Marko van Eekelen, Maarten de Mol
Abstract: We present a proof rule and an effective tactic for proving properties about HASKELL type classes by proving them for the available instance definitions. This is not straightforward, because instance definitions may depend on each other. The proof assistant Isabelle handles this problem for single parameter type classes by structural induction on types. However, this does not suffice for an effective tactic for more complex forms of overloading. We solve this using an induction scheme derived from the instance definitions. The tactic based on this rule is implemented in the proof assistant Sparkle.
1.1 INTRODUCTION
It is often stated that formulating properties about programs increases robustness and safety, especially when formal reasoning is used to prove these properties. Robustness and safety are becoming increasingly important considering the current dependence of society on technology. Research on formal reasoning has spawned many general purpose proof assistants, such as COQ [dt04], ISABELLE [NPW02], and PVS [OSRSC99]. Unfortunately, these general purpose tools are geared towards mathematicians and are hard to use when applied to more practical domains such as actual programming languages.
Because of this, proof assistants have been developed that are geared towards specific programming languages. This allows proofs to be conducted on the source program using specifically designed proof rules. Functional languages are especially suited for formal reasoning because they are referentially transparent. Examples of proof assistants for functional languages are EVT [NFD01] for ERLANG [AV91], SPARKLE [dMvEP01] for CLEAN [vEP01], and ERA [Win99] for HASKELL [Jon03].
1.1.1 Type classes
A feature that is commonly found in functional programming languages is over -loading structured by type classes [WB89]. Type classes essentially are groups of types, the class instances, for which certain operations, the class members, are implemented. These implementations are created from the available instance definitions and may be different for each instance. The type of an instance definition is called the instance head. The equality operator will be used as a running example throughout this paper (Figure 1.1).
In the most basic case, type classes have only one parameter and instance heads are flat, that is, a single constructor applied to a list of type variables. Furthermore, no two instance definitions may overlap.
Several significant extensions have been proposed, such as multiple parameters [JJM97], overlapping instances, and instantiation with constructors [Jon93], that have useful applications such as collections, coercion, isomorphisms and mapping. In this paper, the term general type classes is used for systems of type classes that support these extensions and non-flat instance heads. Figure 1.2 shows a multi parameter class for the symmetric operation eq2.
An important observation regarding type classes is that, in general, the defined instances should be semantically related. For example, all instances of the equality operator usually implement an equivalence relation. These properties can be proven for all instances at once by proving them for the available instance definitions. Unfortunately, this is not straightforward because the instance definitions may depend on each other and hence so will the proofs. For example, equality on lists is only symmetric if equality on the list members is so as well.
1.1.2 Contributions
The only proof assistant with special support for overloading that we know of is ISABELLE [Nip93, Wen97], which essentially supports single parameter type classes and a proof rule for it based on structural induction on types. However, we show that for general type classes, an effective tactic is not easily derived when structural induction is used. We use an induction scheme on types based on...
„Über diesen Titel“ kann sich auf eine andere Ausgabe dieses Titels beziehen.
Anbieter: WeBuyBooks, Rossendale, LANCS, Vereinigtes Königreich
Zustand: Good. Most items will be dispatched the same or the next working day. A copy that has been read but remains in clean condition. All of the pages are intact and the cover is intact and the spine may show signs of wear. The book may have minor markings which are not specifically mentioned. Ex library copy with usual stamps & stickers. Artikel-Nr. wbs1196322935
Anzahl: 1 verfügbar