Sound Regular Corecursion in coFJ

05/28/2020
by   Davide Ancona, et al.
0

The aim of the paper is to provide solid foundations for a programming paradigm natively supporting the creation and manipulation of cyclic data structures. To this end, we describe coFJ, a Java-like calculus where objects can be infinite and methods are equipped with a codefinition (an alternative body). We provide an abstract semantics of the calculus based on the framework of inference systems with corules. In coFJ with this semantics, FJ recursive methods on finite objects can be extended to infinite objects as well, and behave as desired by the programmer, by specifying a codefinition. We also describe an operational semantics which can be directly implemented in a programming language, and prove the soundness of such semantics with respect to the abstract one.

READ FULL TEXT

page 6

page 7

page 17

page 18

page 19

research
10/11/2017

Abductive functional programming, a semantic approach

We propose a call-by-value lambda calculus extended with a new construct...
research
03/06/2023

A Fibrational Tale of Operational Logical Relations: Pure, Effectful and Differential

Logical relations built on top of an operational semantics are one of th...
research
07/16/2020

Probabilistic Programming Semantics for Name Generation

We make a formal analogy between random sampling and fresh name generati...
research
03/30/2023

The Zeta Calculus

We propose a quantum programming language that generalizes the λ-calculu...
research
04/29/2015

Automating Abstract Interpretation of Abstract Machines

Static program analysis is a valuable tool for any programming language ...
research
08/16/2018

Formalisation of a frame stack semantics for a Java-like language

We present a Coq formalisation of the small-step operational semantics o...
research
09/19/2019

On the Design, Implementation, and Use of Laziness in R

The R programming language has been lazy for over twenty-five years. Thi...

Please sign up or login with your details

Forgot password? Click here to reset