26,098 papers · page 313 of 1,305
Colin S. Gordon
Effect systems are lightweight extensions to type systems that can verify a wide range of important properties with modest developer burden. But our general understanding of effect systems is limited primarily to systems where the order of effects is irrelevant. Understanding suc…
Lun Liu, Todd D. Millstein, Madanlal Musuvathi
Modern “safe” programming languages follow a design principle that we call safety by default and performance by choice . By default, these languages enforce important programming abstractions, such as memory and type safety, but they also provide mechanisms that allow expert prog…
Peizun Liu, Thomas Wahl, Thomas W. Reps
A classical result by Ramalingam about synchronization-sensitive interprocedural program analysis implies that reachability for concurrent threads running recursive procedures is undecidable. A technique proposed by Qadeer and Rehof, to bound the number of context switches allowe…
Abu Naser Masud, Björn Lisper
Existing proofs of correctness for dependence-based slicing methods are limited either to the slicing of intraprocedural programs [2, 39], or the proof is only applicable to a specific slicing method [4, 41]. We contribute a general proof of correctness for dependence-based slici…
Yusuke Matsushita, Takeshi Tsukada, Naoki Kobayashi
Reduction to satisfiability of constrained Horn clauses (CHCs) is a widely studied approach to automated program verification. Current CHC-based methods, however, do not work very well for pointer-manipulating programs, especially those with dynamic memory allocation. This articl…
Peter Müller
The European Symposium on Programming (ESOP) is one of the European Joint Conferences on Theory and Practice of Software (ETAPS). It is devoted to fundamental issues in the specification, design, analysis, and implementation of programming languages and systems. ESOP 2020 was ori…
Marco Patrignani, Deepak Garg
Security-preserving compilers generate compiled code that withstands target-level attacks such as alteration of control flow, data leaks, or memory corruption. Many existing security-preserving compilers are proven to be fully abstract, meaning that they reflect and preserve obse…
David J. Pearce
Rust is a relatively new programming language that has gained significant traction since its v1.0 release in 2015. Rust aims to be a systems language that competes with C/C++. A claimed advantage of Rust is a strong focus on memory safety without garbage collection. This is prima…
David Sanán, Yongwang Zhao, Shang-Wei Lin, Yang Liu
To make feasible and scalable the verification of large and complex concurrent systems, it is necessary the use of compositional techniques even at the highest abstraction layers. When focusing on the lowest software abstraction layers, such as the implementation or the machine c…
Jiasi Shen, Martin C. Rinard
We present K onure , a new system that uses active learning to infer models of applications that retrieve data from relational databases. K onure comprises a domain-specific language (each model is a program in this language) and associated inference algorithm that infers models …
Janwillem Swalens, Joeri De Koster, Wolfgang De Meuter
Programmers often combine different concurrency models in a single program, in each part of the program using the model that fits best. Many programming languages, such as Clojure, Scala, and Java, cater to this need by supporting different concurrency models. However, existing p…
Toru Takisaka, Yuichiro Oyabu, Natsuki Urabe, Ichiro Hasuo
Computing reachability probabilities is a fundamental problem in the analysis of randomized programs. This article aims at a comprehensive and comparative account of various martingale-based methods for over- and under-approximating reachability probabilities. Based on the existi…
Bernardo Toninho, Nobuko Yoshida
This work exploits the logical foundation of session types to determine what kind of type discipline for the Λ-calculus can exactly capture, and is captured by, Λ-calculus behaviours. Leveraging the proof theoretic content of the soundness and completeness of sequent calculus and…
Elisabet Lobo Vesga, Alejandro Russo, Marco Gaboardi
Differential privacy offers a formal framework for reasoning about the privacy and accuracy of computations on private data. It also offers a rich set of building blocks for constructing private data analyses. When carefully calibrated, these analyses simultaneously guarantee the…
Weixin Zhang, Yaozhu Sun, Bruno C. d. S. Oliveira
Modularity is a key concern in programming. However, programming languages remain limited in terms of modularity and extensibility. Small canonical problems, such as the Expression Problem (EP), illustrate some of the basic issues: the dilemma between choosing one kind of extensi…
Malgorzata Biernacka, Dariusz Biernacki, Witold Charatonik, Tomasz Drab
We present an abstract machine that implements a full-reducing (a.k.a. strong) call-by-value strategy for pure $\lambda$-calculus. It is derived using Danvy et al.'s functional correspondence from Cregut's KN by: (1) deconstructing KN to a call-by-name normalization-by-evaluation…
Mario Bravetti, Adrian Francalanza, Iaroslav Golovanov, Hans Hüttel, Mathias Jakobsen, Mikkel Kettunen, António Ravara
We present a type-based analysis ensuring memory safety and object protocol completion in the Java-like language Mungo. Objects are annotated with usages, typestates-like specifications of the admissible sequences of method calls. The analysis entwines usage checking, controlling…
Martín Ceresa, Felipe Gorostiaga, César Sánchez
Stream Runtime Verification is a formal dynamic analysis technique that generalizes runtime verification algorithms from temporal logics like LTL to stream monitoring, allowing to compute richer verdicts than Booleans (including quantitative and arbitrary data). In this paper we …
Yu-Fang Chen, Vojtech Havlena, Ondrej Lengál, Andrea Turrini
Abstract elided by the publisher.
Shashank Shekhar Dubey, K. C. Sivaramakrishnan, Thomas Gazagnaire, Anil Madhavapeddy
Abstract elided by the publisher.