Results 1  10
of
15
Satisfiability modulo recursive programs
 In Static Analysis Symposium (SAS
, 2011
"... Abstract. We present a semidecision procedure for checking satisfiability of expressive correctness properties of recursive firstorder functional programs. In our approach, both properties and programs are expressed in the same language, a subset of Scala. We implemented our procedure and integrat ..."
Abstract

Cited by 31 (15 self)
 Add to MetaCart
(Show Context)
Abstract. We present a semidecision procedure for checking satisfiability of expressive correctness properties of recursive firstorder functional programs. In our approach, both properties and programs are expressed in the same language, a subset of Scala. We implemented our procedure and integrated it with the Z3 SMT solver and the Scala compiler. Our procedure is sound for counterexamples and for proofs of terminating functions. It is terminating and thus complete for many important classes of specifications, including all satisfiable formulas and all formulas where recursive functions satisfy certain syntactic restrictions. Using our system, Leon, we verified detailed correctness properties for functional data structure implementations, as well as syntax tree manipulations. We have found our system to be fast for both finding counterexamples and finding correctness proofs, and to scale to larger programs than alternative techniques. 1
Imperative functional programming with isabelle/hol
 In TPHOLs ’08: Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
, 2008
"... Abstract. We introduce a lightweight approach for reasoning about programs involving imperative data structures using the proof assistant Isabelle/HOL. It is based on shallow embedding of programs, a polymorphic heap model using enumeration encodings and type classes, and a stateexception monad sim ..."
Abstract

Cited by 16 (2 self)
 Add to MetaCart
(Show Context)
Abstract. We introduce a lightweight approach for reasoning about programs involving imperative data structures using the proof assistant Isabelle/HOL. It is based on shallow embedding of programs, a polymorphic heap model using enumeration encodings and type classes, and a stateexception monad similar to known counterparts from Haskell. Existing proof automation tools are easily adapted to provide a verification environment. The framework immediately allows for correct code generation to ML and Haskell. Two case studies demonstrate our approach: An arraybased checker for resolution proofs, and a more efficient bytecode verifier. 1
Code generation from Isabelle/HOL theories
, 2008
"... This tutorial gives a motivationdriven introduction to a generic code generator framework in Isabelle for generating executable code in functional programming languages from logical specifications. ..."
Abstract

Cited by 10 (0 self)
 Add to MetaCart
This tutorial gives a motivationdriven introduction to a generic code generator framework in Isabelle for generating executable code in functional programming languages from logical specifications.
Turning inductive into equational specifications
"... Abstract. Inductively defined predicates are frequently used in formal specifications. Using the theorem prover Isabelle, we describe an approach to turn a class of systems of inductively defined predicates into a system of equations using data flow analysis; the translation is carried out inside th ..."
Abstract

Cited by 8 (5 self)
 Add to MetaCart
(Show Context)
Abstract. Inductively defined predicates are frequently used in formal specifications. Using the theorem prover Isabelle, we describe an approach to turn a class of systems of inductively defined predicates into a system of equations using data flow analysis; the translation is carried out inside the logic and resulting equations can be turned into functional program code in SML, OCaml or Haskell using the existing code generator of Isabelle. Thus we extend the scope of code generation in Isabelle from functional to functionallogic programs while leaving the trusted foundations of code generation itself intact. 1
From verified models to verifiable code
, 2009
"... science. The NASA scientific and technical ..."
(Show Context)
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
Reflecting Quantifier Elimination for Linear Arithmetic
"... Abstract. This paper formalizes and verifies quantifier elimination procedures for dense linear orders and for real and integer linear arithmetic in the theorem prover ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
(Show Context)
Abstract. This paper formalizes and verifies quantifier elimination procedures for dense linear orders and for real and integer linear arithmetic in the theorem prover
Parametric linear arithmetic over ordered fields in Isabelle/HOL
"... We use higherorder logic to verify a quantifier elimination procedure for linear arithmetic over ordered fields, where the coefficients of variables are multivariate polynomials over another set of variables, we call parameters. The procedure generalizes Ferrante and Rackoff’s algorithm for the non ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
We use higherorder logic to verify a quantifier elimination procedure for linear arithmetic over ordered fields, where the coefficients of variables are multivariate polynomials over another set of variables, we call parameters. The procedure generalizes Ferrante and Rackoff’s algorithm for the nonparametric case. The formalization is based on axiomatic type classes and automatically carries over to e.g. the rational, real and nonstandard real numbers. It is executable, can be applied to HOL formulae by reflection and performs well on practical examples.
An Isabelle/HOL Formalization of the Textbook Proof of Huffman’s Algorithm
, 2009
"... Huffman’s algorithm is a procedure for constructing a binary tree with minimum weighted path length. This report presents a formal proof of the correctness of Huffman’s algorithm written using Isabelle/HOL. Our proof closely follows the sketches found in standard algorithms textbooks, uncovering a f ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Huffman’s algorithm is a procedure for constructing a binary tree with minimum weighted path length. This report presents a formal proof of the correctness of Huffman’s algorithm written using Isabelle/HOL. Our proof closely follows the sketches found in standard algorithms textbooks, uncovering a few snags in the process. Another distinguishing feature of our formalization is the use of custom induction rules to help Isabelle’s automatic tactics, leading to very short