A note on recursive functions

1996 ◽  
Vol 6 (2) ◽  
pp. 127-139 ◽  
Author(s):  
Nicoletta Sabadini ◽  
Sebastiano Vigna ◽  
Robert F. C. Walters

In this paper, we propose a new and elegant definition of the class of recursive functions, which is analogous to Kleene's definition but differs in the primitives taken, thus demonstrating the computational power of the concurrent programming language introduced in Walters (1991), Walters (1992) and Khalil and Walters (1993).The definition can be immediately rephrased for any distributive graph in a countably extensive category with products, thus allowing a wide, natural generalization of computable functions.

2021 ◽  
Vol 178 (3) ◽  
pp. 229-266
Author(s):  
Ivan Lanese ◽  
Adrián Palacios ◽  
Germán Vidal

Causal-consistent reversible debugging is an innovative technique for debugging concurrent systems. It allows one to go back in the execution focusing on the actions that most likely caused a visible misbehavior. When such an action is selected, the debugger undoes it, including all and only its consequences. This operation is called a causal-consistent rollback. In this way, the user can avoid being distracted by the actions of other, unrelated processes. In this work, we introduce its dual notion: causal-consistent replay. We allow the user to record an execution of a running program and, in contrast to traditional replay debuggers, to reproduce a visible misbehavior inside the debugger including all and only its causes. Furthermore, we present a unified framework that combines both causal-consistent replay and causal-consistent rollback. Although most of the ideas that we present are rather general, we focus on a popular functional and concurrent programming language based on message passing: Erlang.


2021 ◽  
Vol 31 ◽  
Author(s):  
ANDREA VEZZOSI ◽  
ANDERS MÖRTBERG ◽  
ANDREAS ABEL

Abstract Proof assistants based on dependent type theory provide expressive languages for both programming and proving within the same system. However, all of the major implementations lack powerful extensionality principles for reasoning about equality, such as function and propositional extensionality. These principles are typically added axiomatically which disrupts the constructive properties of these systems. Cubical type theory provides a solution by giving computational meaning to Homotopy Type Theory and Univalent Foundations, in particular to the univalence axiom and higher inductive types (HITs). This paper describes an extension of the dependently typed functional programming language Agda with cubical primitives, making it into a full-blown proof assistant with native support for univalence and a general schema of HITs. These new primitives allow the direct definition of function and propositional extensionality as well as quotient types, all with computational content. Additionally, thanks also to copatterns, bisimilarity is equivalent to equality for coinductive types. The adoption of cubical type theory extends Agda with support for a wide range of extensionality principles, without sacrificing type checking and constructivity.


2011 ◽  
Vol 314-316 ◽  
pp. 2152-2157
Author(s):  
Huan Gu

This document explains and demonstrates how to construct JDF data agent tools on .NET Linq platform. This Agent has the ability to create a Job, to add Nodes to an existing Job, and to modify existing Nodes. It is based on the structure of JDF standard and the definition of markup, and packages the node of each layer and its complicated parameters and data type into the object, forming a programming language model that is based on JDF markup object, and reducing the complexity of developing the printing digital process software basing-on JDFXML standard, providing a reference for developing the same distributed digital system basing-on XML driver.


Author(s):  
Muhammad Shumail Naveed ◽  
Muhammad Sarim ◽  
Kamran Ahsan

Programming is the core of computer science and due to this momentousness a special care is taken in designing the curriculum of programming courses. A substantial work has been conducted on the definition of programming courses, yet the introductory programming courses are still facing high attrition, low retention and lack of motivation. This paper introduced a tiny pre-programming language called LPL (Learners Programming Language) as a ZPL (Zeroth Programming Language) to illuminate novice students about elementary concepts of introductory programming before introducing the first imperative programming course. The overall objective and design philosophy of LPL is based on a hypothesis that the soft introduction of a simple and paradigm specific textual programming can increase the motivation level of novice students and reduce the congenital complexities and hardness of the first programming course and eventually improve the retention rate and may be fruitful in reducing the dropout/failure level. LPL also generates the equivalent high level programs from user source program and eventually very fruitful in understanding the syntax of introductory programming languages. To overcome the inherent complexities of unusual and rigid syntax of introductory programming languages, the LPL provide elementary programming concepts in the form of algorithmic and plain natural language based computational statements. The initial results obtained after the introduction of LPL are very encouraging in motivating novice students and improving the retention rate.


Author(s):  
Pablo Nicolás Díaz Bilotto ◽  
Liliana Favre

Software developers face several challenges in deploying mobile applications. One of them is the high cost and technical complexity of targeting development to a wide spectrum of platforms. The chapter proposes to combine techniques based on MDA (Model Driven Architecture) with the HaXe language. The outstanding ideas behind MDA are separating the specification of the system functionality from its implementation on specific platforms, managing the software evolution, increasing the degree of automation of model transformations, and achieving interoperability with multiple platforms. On the other hand, HaXe is a very modern high level programming language that allows us to generate mobile applications that target all major mobile platforms. The main contributions of this chapter are the definition of a HaXe metamodel, the specification of a model-to-model transformation between Java and HaXe and, the definition of an MDA migration process from Java to mobile platforms.


1998 ◽  
Vol 63 (4) ◽  
pp. 1201-1217
Author(s):  
Norman Feldman

In this paper we consider the three-valued logic used by Kleene [6] in the theory of partial recursive functions. This logic has three truth values: true (T), false (F), and undefined (U). One interpretation of U is as follows: Suppose we have two partially recursive predicates P(x) and Q(x) and we want to know the truth value of P(x) ∧ Q(x) for a particular x0. If x0 is in the domain of definition of both P and Q, then P(x0) ∧ Q(x0) is true if both P(x0) and Q(x0) are true, and false otherwise. But what if x0 is not in the domain of definition of P, but is in the domain of definition of Q? There are several choices, but the one chosen by Kleene is that if Q(X0) is false, then P(x0) ∧ Q(x0) is also false and if Q(X0) is true, then P(x0) ∧ Q(X0) is undefined.What arises is the question about knowledge of whether or not x0 is in the domain of definition of P. Is there an effective procedure to determine this? If not, then we can interpret U as being unknown. If there is an effective procedure, then our decision for the truth value for P(x) ∧ Q(x) is based on the knowledge that is not in the domain of definition of P. In this case, U can be interpreted as undefined. In either case, we base our truth value of P(x) ∧ Q(x) on the truth value of Q(X0).


Sign in / Sign up

Export Citation Format

Share Document