Results 1 
9 of
9
General recursion via coinductive types
 Logical Methods in Computer Science
"... Vol. 1 (2:1) 2005, pp. 1–28 ..."
(Show Context)
Stop when you are AlmostFull Adventures in constructive termination
"... Disjunctive wellfoundedness (used in Terminator), sizechange termination, and wellquasiorders (used in supercompilation and termrewrite systems) are examples of techniques that have been successfully applied to automatic proofs of program termination and online termination testing, respectively ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
(Show Context)
Disjunctive wellfoundedness (used in Terminator), sizechange termination, and wellquasiorders (used in supercompilation and termrewrite systems) are examples of techniques that have been successfully applied to automatic proofs of program termination and online termination testing, respectively. Although these works originate in different communities, there is an intimate connection between them – they rely on closely related principles and both employ similar arguments from Ramsey theory. At the same time there is a notable absence of these techniques in programming systems based on constructive type theory. In this paper we’d like to highlight the aforementioned connection and make the core ideas widely accessible to theoreticians and Coq programmers, by offering a Coq development which culminates in some novel tools for performing induction. The benefit is nice composability properties of termination arguments at the cost of intuitive and lightweight user obligations. Inevitably, we have to present some Ramseylike arguments: Though similar proofs are typically classical, we offer an entirely constructive development standing on the shoulders of Veldman and Bezem, and Richman and Stolzenberg. 1.
General Terms
"... We propose a new way to reason about general recursive functional programs in the dependently typed programming language Agda, which is based on MartinLöf’s intuitionistic type theory. We show how to embed an external programming logic, Aczel’s Logical Theory of Constructions (LTC) inside Agda. To ..."
Abstract
 Add to MetaCart
We propose a new way to reason about general recursive functional programs in the dependently typed programming language Agda, which is based on MartinLöf’s intuitionistic type theory. We show how to embed an external programming logic, Aczel’s Logical Theory of Constructions (LTC) inside Agda. To this end we postulate the existence of a domain of untyped functional programs and the conversion rules for these programs. Furthermore, we represent the inductive notions in LTC (intuitionistic predicate logic and totality predicates) as inductive notions in Agda. To illustrate our approach we specify an LTCstyle logic for PCF, and show how to prove the termination and correctness of a general recursive algorithm for computing the greatest common divisor of two numbers. Categories and Subject Descriptors F.3.1 [Logics and meanings of programs]: Specifying and Verifying and Reasoning about Programs–Logics of programs; D.2.4 [Software Engineering]:
A Type of Partial Recursive Functions
"... Abstract. Our goal is to define a type of partial recursive functions in constructive type theory. In a series of previous articles, we studied two different formulations of partial functions and general recursion. In both cases, we could obtain a type only by extending the theory with either an imp ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract. Our goal is to define a type of partial recursive functions in constructive type theory. In a series of previous articles, we studied two different formulations of partial functions and general recursion. In both cases, we could obtain a type only by extending the theory with either an impredicative universe or with coinductive definitions. Here we present a new type constructor that eludes such entities of dubious constructive credentials. We start by showing how to break down a recursive function definition into three components: the first component generates the arguments of the recursive calls, the second one evaluates them, and the last one computes the output from the results of the recursive calls. We use this dissection as the basis for the introduction rule of the new type constructor: a partial recursive function is created by giving the first and third of the above components. As in one of our previous methods, every partial recursive function is associated with an inductive domain predicate and the evaluation of the function requires a proof that the predicate holds on the input values. We give a constructive justification for the new construct by means of an interpretation from the extended type theory into the base one. This shows that the extended theory is consistent and constructive. 1
Djinn, Monotonic (extended abstract)
"... Dyckhoff’s algorithm for contractionfree proof search in intuitionistic propositional logic (popularized by Augustsson as the typedirected program synthesis tool, Djinn) is a simple program with a rather tricky termination proof [4]. In this talk, I describe my efforts to reduce this program to a ..."
Abstract
 Add to MetaCart
(Show Context)
Dyckhoff’s algorithm for contractionfree proof search in intuitionistic propositional logic (popularized by Augustsson as the typedirected program synthesis tool, Djinn) is a simple program with a rather tricky termination proof [4]. In this talk, I describe my efforts to reduce this program to a steady structural descent. On the way, I shall present an attempt at a compositional approach to explaining termination, via a uniform presentation of memoization. 1
Privacy in Data Mining Using Formal Methods
"... Abstract. There is growing public concern about personal data collected by both private and public sectors. People have very little control over what kinds of data are stored and how such data is used. Moreover, the ability to infer new knowledge from existing data is increasing rapidly with advance ..."
Abstract
 Add to MetaCart
Abstract. There is growing public concern about personal data collected by both private and public sectors. People have very little control over what kinds of data are stored and how such data is used. Moreover, the ability to infer new knowledge from existing data is increasing rapidly with advances in database and data mining technologies. We describe a solution which allows people to take control by specifying constraints on the ways in which their data can be used. User constraints are represented in formal logic, and organizations that want to use this data provide formal proofs that the software they use to process data meets these constraints. Checking the proof by an independent verifier demonstrates that user constraints are (or are not) respected by this software. Our notion of “privacy correctness” differs from general software correctness in two ways. First, properties of interest are simpler and thus their proofs should be easier to automate. Second, this kind of correctness is stricter; in addition to showing a certain relation between input and output is realized, we must also show that only operations that respect privacy constraints are applied during execution. We have therefore an intensional notion of correctness, rather that the usual extensional one. We discuss how our mechanism can be put into practice, and we present the technical aspects via an example. Our example shows how users can exercise control when their data is to be used as input to a decision tree learning algorithm. We have formalized the example and the proof of preservation of privacy constraints in Coq. 1
www.lmcsonline.org GENERAL RECURSION VIA COINDUCTIVE TYPES
, 2004
"... Abstract. A fertile field of research in theoretical computer science investigates the representation of general recursive functions in intensional type theories. Among the most successful approaches are: the use of wellfounded relations, implementation of operational semantics, formalization of dom ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract. A fertile field of research in theoretical computer science investigates the representation of general recursive functions in intensional type theories. Among the most successful approaches are: the use of wellfounded relations, implementation of operational semantics, formalization of domain theory, and inductive definition of domain predicates. Here, a different solution is proposed: exploiting coinductive types to model infinite computations. To every type A we associate a type of partial elements A ν, coinductively generated by two constructors: the first, �a � just returns an element a: A; the second, ⊲ x, adds a computation step to a recursive element x: A ν. We show how this simple device is sufficient to formalize all recursive functions between two given types. It allows the definition of fixed points of finitary, that is, continuous, operators. We will compare this approach to different ones from the literature. Finally, we mention that the formalization, with appropriate structural maps, defines a strong monad. 1.