Tracing sharing in an imperative pure calculus (Extended Version)

03/15/2018
by   Paola Giannini, et al.
0

We introduce a type and effect system, for an imperative object calculus, which infers "sharing" possibly introduced by the evaluation of an expression, represented as an equivalence relation among its free variables. This direct representation of sharing effects at the syntactic level allows us to express in a natural way, and to generalize, widely-used notions in literature, notably "uniqueness" and "borrowing". Moreover, the calculus is "pure" in the sense that reduction is defined on language terms only, since they directly encode store. The advantage of this non-standard execution model with respect to a behaviourally equivalent standard model using a global auxiliary structure is that reachability relations among references are partly encoded by scoping.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
03/15/2018

Tracing sharing in an imperative pure calculus

We introduce a type and effect system, for an imperative object calculus...
research
06/30/2018

Flexible recovery of uniqueness and immutability (Extended Version)

We present an imperative object calculus where types are annotated with ...
research
02/26/2019

The C_π-calculus: a Model for Confidential Name Passing

Sharing confidential information in distributed systems is a necessity i...
research
09/15/2022

Coeffects for Sharing and Mutation

In type-and-coeffect systems, contexts are enriched by coeffects modelin...
research
04/23/2019

A Syntactic Model of Mutation and Aliasing

Traditionally, semantic models of imperative languages use an auxiliary ...
research
09/15/2023

Graph IRs for Impure Higher-Order Languages (Technical Report)

This is a companion report for the OOPSLA 2023 paper of the same title, ...
research
10/20/2017

An impure solution to the problem of matching fans

We present an algorithm to solve the problem of matching fans in interac...

Please sign up or login with your details

Forgot password? Click here to reset