recursive functions
Recently Published Documents


TOTAL DOCUMENTS

598
(FIVE YEARS 27)

H-INDEX

26
(FIVE YEARS 1)

2021 ◽  
Vol 28 (4) ◽  
pp. 372-393
Author(s):  
Dmitry A. Kondratyev

The C-lightVer system is developed in IIS SB RAS for C-program deductive verification. C-kernel is an intermediate verification language in this system. Cloud parallel programming system (CPPS) is also developed in IIS SB RAS. Cloud Sisal is an input language of CPPS. The main feature of CPPS is implicit parallel execution based on automatic parallelization of Cloud Sisal loops. Cloud-Sisal-kernel is an intermediate verification language in the CPPS system. Our goal is automatic parallelization of such a superset of C that allows implementing automatic verification. Our solution is such a superset of C-kernel as C-Sisal-kernel. The first result presented in this paper is an extension of C-kernel by Cloud-Sisal-kernel loops. We have obtained the C-Sisal-kernel language. The second result is an extension of C-kernel axiomatic semantics by inference rule for Cloud-Sisal-kernel loops. The paper also presents our approach to the problem of deductive verification automation in the case of finite iterations over data structures. This kind of loops is referred to as definite iterations. Our solution is a composition of symbolic method of verification of definite iterations, verification condition metageneration and mixed axiomatic semantics method. Symbolic method of verification of definite iterations allows defining inference rules for these loops without invariants. Symbolic replacement of definite iterations by recursive functions is the base of this method. Obtained verification conditions with applications of recursive functions correspond to logical base of ACL2 prover. We use ACL2 system based on computable recursive functions. Verification condition metageneration allows simplifying implementation of new inference rules in a verification system. The use of mixed axiomatic semantics results to simpler verification conditions in some cases.


Computability ◽  
2021 ◽  
pp. 1-8
Author(s):  
Pace P. Nielsen

The unary primitive recursive functions can be defined in terms of a finite set of initial functions together with a finite set of unary and binary operations that are primitive recursive in their inputs. We reduce arity considerations, by show that two fixed unary operations suffice, and a single initial function can be chosen arbitrarily. The method works for many other classes of functions, including the unary partial computable functions. For this class of partial functions we also show that a single unary operation (together with any finite set of initial functions) will never suffice.


2021 ◽  
Vol 18 (5) ◽  
pp. 447-472
Author(s):  
Ross Brady

We assess Meyer’s formalization of arithmetic in his [21], based on the strong relevant logic R and compare this with arithmetic based on a suitable logic of meaning containment, which was developed in Brady [7]. We argue in favour of the latter as it better captures the key logical concepts of meaning and truth in arithmetic. We also contrast the two approaches to classical recapture, again favouring our approach in [7]. We then consider our previous development of Peano arithmetic including primitive recursive functions, finally extending this work to that of general recursion.


2021 ◽  
Vol 14 (3) ◽  
pp. 439-461
Author(s):  
Eric Chesebro ◽  
Cory Emlen ◽  
Kenton Ke ◽  
Denise LaFontaine ◽  
Kelly McKinnie ◽  
...  
Keyword(s):  

2021 ◽  
Vol 15 (13) ◽  
pp. 657-665
Author(s):  
Jelloul Elmesbahi
Keyword(s):  

Author(s):  
Qinheping Hu ◽  
John Cyphert ◽  
Loris D’Antoni ◽  
Thomas Reps

AbstractWe present a method for synthesizing recursive functions that satisfy both a functional specification and an asymptotic resource bound. Prior methods for synthesis with a resource metric require the user to specify a concrete expression exactly describing resource usage, whereas our method uses big-O notation to specify the asymptotic resource usage. Our method can synthesize programs with complex resource bounds, such as a sort function that has complexity $$O(n\log (n))$$ O ( n log ( n ) ) .Our synthesis procedure uses a type system that is able to assign an asymptotic complexity to terms, and can track recurrence relations of functions. These typing rules are justified by theorems used in analysis of algorithms, such as the Master Theorem and the Akra-Bazzi method. We implemented our method as an extension of prior type-based synthesis work. Our tool, SynPlexity, was able to synthesize complex divide-and-conquer programs that cannot be synthesized by prior solvers.


Author(s):  
Azadeh Farzan ◽  
Victor Nicolet

AbstractQuantifier bounding is a standard approach in inductive program synthesis in dealing with unbounded domains. In this paper, we propose one such bounding method for the synthesis of recursive functions over recursive input data types. The synthesis problem is specified by an input reference (recursive) function and a recursion skeleton. The goal is to synthesize a recursive function equivalent to the input function whose recursion strategy is specified by the recursion skeleton. In this context, we illustrate that it is possible to selectively bound a subset of the (recursively typed) parameters, each by a suitable bound. The choices are guided by counterexamples. The evaluation of our strategy on a broad set of benchmarks shows that it succeeds in efficiently synthesizing non-trivial recursive functions where standard across-the-board bounding would fail.


2021 ◽  
Vol 15 (12) ◽  
pp. 637-642
Author(s):  
Jelloul Elmesbahi ◽  
Ahmed Errami ◽  
Mohamed Khaldoune

Author(s):  
Jacob Errington ◽  
Junyoung Jang ◽  
Brigitte Pientka

AbstractBeluga is a proof checker that provides sophisticated infrastructure for implementing formal systems with the logical framework LF and proving metatheoretic properties as total, recursive functions transforming LF derivations. In this paper, we describe Harpoon, an interactive proof engine built on top of Beluga. It allows users to develop proofs interactively using a small, fixed set of high-level actions that safely transform a subgoal. A sequence of actions elaborates into a (partial) proof script that serves as an intermediate representation describing an assertion-level proof. Last, a proof script translates into a Beluga program which can be type-checked independently. Harpoon is available on GitHub. We have used Harpoon to replay a wide array of examples covering all features supported by Beluga. In particular, we have used it for normalization proofs, including the recently proposed POPLMark reloaded challenge.


Sign in / Sign up

Export Citation Format

Share Document