We introduce a powerful termination algorithm for structurally recursive functions that improves on the core ideas behind lexicographic termination algorithms for functional programs. The algorithm generates linear-le...
详细信息
Determining the approximate degree composition for Boolean functions remains a significant unsolved problem in Boolean function complexity. In recent decades, researchers have concentrated on proving that approximate ...
详细信息
Path coverage is of critical importance in software testing and verification, and further, path explosion is a well-known challenge for automatic software analysis techniques like symbolic execution [7]. Asymptotic Pa...
详细信息
ISBN:
(纸本)9798350322637
Path coverage is of critical importance in software testing and verification, and further, path explosion is a well-known challenge for automatic software analysis techniques like symbolic execution [7]. Asymptotic Path Complexity (APC), a code complexity metric developed in my research lab, formalizes the quantitative measurement of path explosion.
This work addresses the problem of verifying imperative programs that manipulate data structures, e.g., Rust programs. Data structures are usually modeled by Algebraic Data Types (ADTs) in verification conditions. Ind...
详细信息
This work addresses the problem of verifying imperative programs that manipulate data structures, e.g., Rust programs. Data structures are usually modeled by Algebraic Data Types (ADTs) in verification conditions. Inductive invariants of such programs often require recursively defined functions (RDFs) to represent abstractions of data structures. From the logic perspective, this reduces to solving Constrained Horn Clauses (CHCs) modulo both ADT and RDF. The underlying logic with RDFs is undecidable. Thus, even verifying a candidate inductive invariant is undecidable. Similarly, IC3-based algorithms for solving CHCs lose their progress guarantee: they may not find counterexamples when the program is unsafe. We propose a novel IC3-inspired algorithm Racer for solving CHCs modulo ADT and RDF (i.e., automatically synthesizing inductive invariants, as opposed to only verifying them as is done in deductive verification). Racer ensures progress despite the undecidability of the underlying theory, and is guaranteed to terminate with a counterexample for unsafe programs. It works with a general class of RDFs over ADTs called catamorphisms. The key idea is to represent catamorphisms as both CHCs, via relationification, and RDFs, using novel abstractions. Encoding catamorphisms as CHCs allows learning inductive properties of catamorphisms, as well as preserving unsatisfiabilty of the original CHCs despite the use of RDF abstractions, whereas encoding catamorphisms as RDFs allows unfolding the recursive definition, and relying on it in solutions. Abstractions ensure that the underlying theory remains decidable. We implement our approach in Z3 and show that it works well in practice.
Partial functions are a key concept in programming. Without partiality a programming language has limited expressiveness - it is not Turing- complete, hence, it excludes some constructs such as while-loops. In functio...
详细信息
Partial functions are a key concept in programming. Without partiality a programming language has limited expressiveness - it is not Turing- complete, hence, it excludes some constructs such as while-loops. In functional programming languages, partiality mostly originates from the non-termination of recursive functions. Corecursive functions are another source of partiality: here, the issue is not termination, but the inability to produce arbitrary large, finite approximations of a theoretically infinite output. Partial functions have been formally studied in the branch of theoretical computer science called domain theory. In this paper we propose to step up the level of formality by using the Coq proof assistant. The main difficulty is that Coq requires all functions to be total, since partiality would break the soundness of its underlying logic. We propose practical solutions for this issue, and others, which appear when one attempts to define and reason about partial (co)recursive functions in a total functional language.
The intrinsic complexity of a relation on a given computable structure is captured by the notion of its degree spectrum – the set of Turing degrees of images of the relation in all computable isomorphic copies of tha...
详细信息
Raphael Robinson showed that all primitive recursive functions, depending on one argument, and only they could be obtained from two functions s(x) = x + 1 and q(x) = x divided by [root x](2) by using the operations of...
详细信息
Raphael Robinson showed that all primitive recursive functions, depending on one argument, and only they could be obtained from two functions s(x) = x + 1 and q(x) = x divided by [root x](2) by using the operations of addition+, superposition*, and iteration i. Julia Robinson proved that, starting from the same two functions and using the operations of addition+, superposition*, and the operation(-1) of function inversion, one could obtain all general recursive functions (under a certain condition on the inversion operation) and all partial recursive functions. On the basis of these results, A.I. Mal'tsev introduced into consideration Raphael Robinson algebra of all unary primitive recursive functions and two of Julia Robinson's algebras: namely, the partial algebra of all unary general recursive functions and the algebra of all unary partial recursive functions, and proposed to study the properties of these algebras, including the existence of finite bases of identities in these algebras. In this paper, we show that there is no finite basis of identities in any of the above algebras.
A recursive function on a tree is a function in which each leaf has a given value, and each internal node has a value equal to a function of the number of children, the values of the children, and possibly an explicit...
详细信息
A recursive function on a tree is a function in which each leaf has a given value, and each internal node has a value equal to a function of the number of children, the values of the children, and possibly an explicitly specified random elementU. The value of the root is the key quantity of interest in general. In this study, all node values and function values are in a finite setS. In this note, we describe the limit behavior when the leaf values are drawn independently from a fixed distribution onS, and the treeT(n)is a random Galton-Watson tree of sizen.
We explore recursive programming with extensible data types. Row types make the structure of data types first class, and can express a variety of type system features from subtyping to modular combination of case bran...
详细信息
Determining the approximate degree composition for Boolean functions remains a significant unsolved problem in Boolean function complexity. In recent decades, researchers have concentrated on proving that approximate ...
详细信息
暂无评论