Results 1 -
4 of
4
A language-based approach to functionally correct imperative programming
- IN PROCEEDINGS OF THE 10TH INTERNATIONAL CONFERENCE ON FUNCTIONAL PROGRAMMING (ICFP05
, 2005
"... In this paper a language-based approach to functionally correct imperative programming is proposed. The approach is based on a programming language called RSP1, which combines dependent types, general recursion, and imperative features in a type-safe way, while preserving decidability of type checki ..."
Abstract
-
Cited by 33 (8 self)
- Add to MetaCart
In this paper a language-based approach to functionally correct imperative programming is proposed. The approach is based on a programming language called RSP1, which combines dependent types, general recursion, and imperative features in a type-safe way, while preserving decidability of type checking. The methodology used is that of internal verification, where programs manipulate programmer-supplied proofs explicitly as data. The fundamental technical idea of RSP1 is to identify problematic operations as impure, and keep them out of dependent types. The resulting language is powerful enough to verify statically non-trivial properties of imperative and functional programs. The paper presents the ideas through the examples of statically verified merge sort, statically verified imperative binary search trees, and statically verified directed acyclic graphs. This paper is an extended version of [30].
Choosing among Signalling Equilibria in Lobbying Games: A Reply to Sloof
- Public Choice
, 2006
"... A solution to the POPLmark challenge part 1a in Coq version 8.0 is described, where names are used for bound variables. The technical complexities associated with using names for bound variables are tamed using two main technical ideas: de Bruijn levels for free variables, and the Barendregt variabl ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
A solution to the POPLmark challenge part 1a in Coq version 8.0 is described, where names are used for bound variables. The technical complexities associated with using names for bound variables are tamed using two main technical ideas: de Bruijn levels for free variables, and the Barendregt variable convention. The resulting solution stands at around 1250 lines of Coq (as written by a novice Coq user). 1
What a Mesh: Dependent Data Types for Correct Mesh Manipulation Algorithms
- Master’s thesis, Washington University in Saint Louis, 2005. In preparation
, 2005
"... ..."
Higher-Order Encodings with Constructors
, 2008
"... As programming languages become more complex, there is a growing call in the research community for machine-checked proofs about programming languages. A key obstacle to this goal is in formalizing name binding, where a new name is created in a limited scope. Name binding is used in almost every pro ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
As programming languages become more complex, there is a growing call in the research community for machine-checked proofs about programming languages. A key obstacle to this goal is in formalizing name binding, where a new name is created in a limited scope. Name binding is used in almost every programming language to refer to the formal arguments to a function. For example, the function f (x) = x ∗ 2, which doubles its argument, binds the name x for its formal argument. Though this concept is intuitively straightforward, it is complex to define precisely because of the intended properties of name binding. For example, the above function is considered “syntactically equivalent ” to f (y) = y ∗ 2. It is the goal of this dissertation to posit a new technique for encoding name binding, called Higher-Order Encodings with Constructors or HOEC. HOEC encodes name binding with a construct called the ν-abstraction, which binds new constructors in a limited scope. These constructors can then be used to encode names. ν-abstractions already have the required properties of name bindings, so name binding need only be ii formalized once, in the definition of the ν-abstraction. The user thus then gets name

