4 research outputs found
Output Without Delay: A ?-Calculus Compatible with Categorical Semantics
The quest for logical or categorical foundations of the ?-calculus (not limited to session-typed variants) remains an important challenge. A categorical type theory correspondence for a variant of the i/o-typed ?-calculus was recently revealed by Sakayori and Tsukada, but, at the same time, they exposed that this categorical semantics contradicts with most of the behavioural equivalences. This paper diagnoses the nature of this problem and attempts to fill the gap between categorical and operational semantics. We first identify the source of the problem to be the mismatch between the operational and categorical interpretation of a process called the forwarder. From the operational viewpoint, a forwarder may add an arbitrary delay when forwarding a message, whereas, from the categorical viewpoint, a forwarder must not add any delay when forwarding a message. Led by this observation, we introduce a calculus that can express forwarders that do not introduce delay. More specifically, the calculus we introduce is a variant of the ?-calculus with a new operational semantics in which output actions are forced to happen as soon as they get unguarded. We show that this calculus (i) is compatible with the categorical semantics and (ii) can encode the standard ?-calculus
Borrowable Fractional Ownership Types for Verification
Automated verification of functional correctness of imperative programs with
references (a.k.a. pointers) is challenging because of reference aliasing.
Ownership types have recently been applied to address this issue, but the
existing approaches were limited in that they are effective only for a class of
programs whose reference usage follows a certain style. To relax the
limitation, we combine the approaches of ConSORT (based on fractional
ownership) and RustHorn (based on borrowable ownership), two recent approaches
to automated program verification based on ownership types, and propose the
notion of borrowable fractional ownership types. We formalize a new type system
based on the borrowable fractional ownership types and show how we can use it
to automatically reduce the program verification problem for imperative
programs with references to that for functional programs without references. We
also show the soundness of our type system and the translation, and conduct
experiments to confirm the effectiveness of our approach.Comment: An extended version of the paper to appear in Proceedings of VMCAI
202
Extensional and Non-extensional Functions as Processes
Following Milner's seminal paper, the representation of functions as processes has received considerable attention. For pure λ-calculus, the process representations yield (at best) non-extensional λ-theories (i.e., β rule holds, whereas η does not). In the paper, we study how to obtain extensional representations, and how to move between extensional and non-extensional representations. Using Internal π, Iπ (a subset of the π-calculus in which all outputs are bound), we develop a refinement of Milner's original encoding of functions as processes that is parametric on certain abstract components called wires. These are, intuitively, processes whose task is to connect two end-point channels. We show that when a few algebraic properties of wires hold, the encoding yields a λ-theory. Exploiting the symmetries and dualities of Iπ, we isolate three main classes of wires. The first two have a sequential behaviour and are dual of each other; the third has a parallel behaviour and is the dual of itself. We show the adoption of the parallel wires yields an extensional λ-theory; in fact, it yields an equality that coincides with that of Böhm trees with infinite η. In contrast, the other two classes of wires yield nonextensional λ-theories whose equalities are those of the Lévy-Longo and Böhm trees