Results 1  10
of
19
Constructive type classes in Isabelle
 TYPES FOR PROOFS AND PROGRAMS
, 2007
"... We reconsider the wellknown concept of Haskellstyle type classes within the logical framework of Isabelle. So far, axiomatic type classes in Isabelle merely account for the logical aspect as predicates over types, while the operational part is only a convention based on raw overloading. Our more e ..."
Abstract

Cited by 20 (7 self)
 Add to MetaCart
We reconsider the wellknown concept of Haskellstyle type classes within the logical framework of Isabelle. So far, axiomatic type classes in Isabelle merely account for the logical aspect as predicates over types, while the operational part is only a convention based on raw overloading. Our more elaborate approach to constructive type classes provides a seamless integration with Isabelle locales, which are able to manage both operations and logical properties uniformly. Thus we combine the convenience of type classes and the flexibility of locales. Furthermore, we construct dictionary terms derived from notions of the type system. This additional internal structure provides satisfactory foundations of type classes, and supports further applications, such as code generation and export of theories and theorems to environments without type classes.
Finding lexicographic orders for termination proofs in Isabelle/HOL
 In Proc. TPHOLs’07, volume 4732 of LNCS
, 2007
"... ..."
(Show Context)
Certified sizechange termination
 In Proc. 21st CADE, volume 4603 of LNAI
, 2007
"... Abstract. We develop a formalization of the SizeChange Principle in Isabelle/HOL and use it to construct formally certified termination proofs for recursive functions automatically. 1 ..."
Abstract

Cited by 16 (1 self)
 Add to MetaCart
(Show Context)
Abstract. We develop a formalization of the SizeChange Principle in Isabelle/HOL and use it to construct formally certified termination proofs for recursive functions automatically. 1
Formalizing the LogicAutomaton Connection
"... Abstract. This paper presents a formalization of a library for automata on bit strings in the theorem prover Isabelle/HOL. It forms the basis of a reflectionbased decision procedure for Presburger arithmetic, which is efficiently executable thanks to Isabelle’s code generator. With this work, we th ..."
Abstract

Cited by 10 (1 self)
 Add to MetaCart
(Show Context)
Abstract. This paper presents a formalization of a library for automata on bit strings in the theorem prover Isabelle/HOL. It forms the basis of a reflectionbased decision procedure for Presburger arithmetic, which is efficiently executable thanks to Isabelle’s code generator. With this work, we therefore provide a mechanized proof of the wellknown connection between logic and automata theory. 1
Defining Recursive Functions in Isabelle/HOL
"... This tutorial describes the use of the new function package, which provides general recursive function definitions for Isabelle/HOL. We start with very simple examples and then gradually move on to more advanced topics such as manual termination proofs, nested recursion, partiality, tail recursion a ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
This tutorial describes the use of the new function package, which provides general recursive function definitions for Isabelle/HOL. We start with very simple examples and then gradually move on to more advanced topics such as manual termination proofs, nested recursion, partiality, tail recursion and congruence rules. 1
Assuming Termination
"... A requirement for the admission of a recursive function definition in ACL2 is a proof that the recursion terminates. Establishing termination involves identifying a wellfounded relation and an appropriate measure function that decreases according to the wellfounded relation with each recursive cal ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
(Show Context)
A requirement for the admission of a recursive function definition in ACL2 is a proof that the recursion terminates. Establishing termination involves identifying a wellfounded relation and an appropriate measure function that decreases according to the wellfounded relation with each recursive call. Depending on the domain this process may prove difficult, unnecessary or even impossible. Manolios and Moore introduced a method for admitting tailrecursive function definitions that does not require the specification of a measure. Their method, however, does not produce an induction scheme. We present an extension of their method that enables the admission of arbitrary recursive function definitions and their associated induction schemes augmented with a termination check and justified by a partial measure. We demonstrate the use of this method by defining the tarai function and proving by induction its unwinding under the assumption that it terminates.
From higherorder logic to Haskell: there and back again
 In the ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, PEPM’10
, 2010
"... We present two tools which together allow reasoning about (a substantial subset of) Haskell programs. One is the code generator of the proof assistant Isabelle, which turns specifications formulated in Isabelle’s higherorder logic into executable Haskell source text; the other is Haskabelle, a to ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
(Show Context)
We present two tools which together allow reasoning about (a substantial subset of) Haskell programs. One is the code generator of the proof assistant Isabelle, which turns specifications formulated in Isabelle’s higherorder logic into executable Haskell source text; the other is Haskabelle, a tool to translate programs written in Haskell into Isabelle specifications. The translation from Isabelle to Haskell directly benefits from the rigorous correctness approach of a proof assistant: generated Haskell programs are always partially correct w.r.t. to the specification from which they are generated.
Validating and animating higherorder recursive functions in B. Submitted; preliminary version presented at Dagstuhl Seminar 06191 Rigorous Methods for Software Construction and Analysis
, 2006
"... Abstract. ProB is an animation and model checking tool for the B Method, which can deal with many interesting specifications. Some specifications, however, contain complicated functions which cannot be represented explicitly by a tool. We present a scheme with which higherorder recursive functions ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
(Show Context)
Abstract. ProB is an animation and model checking tool for the B Method, which can deal with many interesting specifications. Some specifications, however, contain complicated functions which cannot be represented explicitly by a tool. We present a scheme with which higherorder recursive functions can be encoded in B, and establish soundness of this scheme. We then describe a symbolic representation for such functions. This representation enables ProB to successfully animate and model check a new class of relevant specifications, where animation is especially important due to the involved nature of the specification.
Verified Decision Procedures on ContextFree Grammars
"... Abstract. We verify three decision procedures on contextfree grammars utilized in a program analyzer for a serverside programming language. One of the procedures decides inclusion between a contextfree language and a regular language. The other two decide decision problems related to the wellfor ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
(Show Context)
Abstract. We verify three decision procedures on contextfree grammars utilized in a program analyzer for a serverside programming language. One of the procedures decides inclusion between a contextfree language and a regular language. The other two decide decision problems related to the wellformedness and validity of XML documents. From its formalization, we generate executable code for a balancedness checking procedure and incorporate it into an existing program analyzer. 1
Formalising finfuns — generating code for functions as data from Isabelle/HOL
 of Lecture Notes in Computer Science
, 2009
"... Abstract. FinFuns are total functions that are constant except for a finite set of points, i.e. a generalisation of finite maps. We formalise them in Isabelle/HOL and present how to safely set up Isabelle’s code generator such that operations like equality testing and quantification on FinFuns be ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
(Show Context)
Abstract. FinFuns are total functions that are constant except for a finite set of points, i.e. a generalisation of finite maps. We formalise them in Isabelle/HOL and present how to safely set up Isabelle’s code generator such that operations like equality testing and quantification on FinFuns become executable. On the code output level, FinFuns are explicitly represented by constant functions and pointwise updates, similarly to associative lists. Inside the logic, they behave like ordinary functions with extensionality. Via the update/constant pattern, a recursion combinator and an induction rule for FinFuns allow for defining and reasoning about operators on FinFuns that directly become executable. We apply the approach to an executable formalisation of sets and use it for the semantics for a subset of concurrent Java. 1