English
Related papers

Related papers: Abstract Operational Methods for Call-by-Push-Valu…

200 papers

The invariance thesis of Slot and van Emde Boas states that all reasonable models of computation simulate each other with polynomially bounded overhead in time and constant-factor overhead in space. In this paper we show that a family of…

Programming Languages · Computer Science 2021-02-12 Małgorzata Biernacka , Witold Charatonik , Tomasz Drab

We show that recent approaches of static analysis based on quantitative typing systems can be extended to programming languages with global state. More precisely, we define a call-by-value language equipped with operations to access a…

Programming Languages · Computer Science 2023-06-19 Sandra Alves , Delia Kesner , Miguel Ramos

We extend Levy's call-by-push-value (CBPV) analysis from simple to dependent type theory (DTT) in order to study the interaction between computational effects and dependent types. We define the naive system of dependently typed CBPV,…

Programming Languages · Computer Science 2016-03-15 Matthijs Vákár

We propose a call-by-value lambda calculus extended with a new construct inspired by abductive inference and motivated by the programming idioms of machine learning. Although syntactically simple the abductive construct has a complex and…

Programming Languages · Computer Science 2017-10-12 Koko Muroya , Steven Cheung , Dan R. Ghica

Existing Curry-Howard interpretations of call-by-value evaluation for the $\lambda$-calculus are either based on ad-hoc modifications of intuitionistic proof systems or involve additional logical concepts such as classical logic or linear…

Logic in Computer Science · Computer Science 2024-11-06 Beniamino Accattoli

The good properties of Plotkin's call-by-value lambda-calculus crucially rely on the restriction to weak evaluation and closed terms. Open call-by-value is the more general setting where evaluation is weak but terms may be open. Such an…

Logic in Computer Science · Computer Science 2018-10-30 Beniamino Accattoli , Giulio Guerrieri

The call-by-need lambda calculus provides an equational framework for reasoning syntactically about lazy evaluation. This paper examines its operational characteristics. By a series of reasoning steps, we systematically unpack the…

Programming Languages · Computer Science 2015-07-01 Ronald Garcia , Andrew Lumsdaine , Amr Sabry

Calculi with control operators have been studied to reason about control in programming languages and to interpret the computational content of classical proofs. To make these calculi into a real programming language, one should also…

Logic in Computer Science · Computer Science 2012-10-12 Robbert Krebbers

Compilers use control flow graph (CFG) representations of low-level programs because they are suited to program analysis and optimizations. However, formalizing the behavior and metatheory of CFG programs is non-trivial: CFG programs don't…

Programming Languages · Computer Science 2018-05-16 Dmitri Garbuzov , William Mansky , Christine Rizkallah , Steve Zdancewic

We provide a sound and relatively complete Hoare-like proof system for reasoning about partial correctness of recursive procedures in presence of local variables and the call-by-value parameter mechanism, and in which the correctness proofs…

Logic in Computer Science · Computer Science 2019-09-16 Krzysztof R. Apt , Frank S. de Boer

The existing call-by-need lambda calculi describe lazy evaluation via equational logics. A programmer can use these logics to safely ascertain whether one term is behaviorally equivalent to another or to determine the value of a lazy…

Programming Languages · Computer Science 2012-01-19 Stephen Chang , Matthias Felleisen

The study of polarity in computation has revealed that an "ideal" programming language combines both call-by-value and call-by-name evaluation; the two calling conventions are each ideal for half the types in a programming language. But…

Logic in Computer Science · Computer Science 2023-06-22 Paul Downen , Zena M. Ariola

This paper formalizes and proves correct a compilation scheme for mutually-recursive definitions in call-by-value functional languages. This scheme supports a wider range of recursive definitions than previous methods. We formalize our…

Programming Languages · Computer Science 2010-02-01 Tom Hirschowitz , Xavier Leroy , J. B. Wells

Higher-order abstract GSOS is a recent extension of Turi and Plotkin's framework of Mathematical Operational Semantics to higher-order languages. The fundamental well-behavedness property of all specifications within the framework is that…

Programming Languages · Computer Science 2023-09-29 Henning Urbat , Stelios Tsampas , Sergey Goncharov , Stefan Milius , Lutz Schröder

In implementing evaluation strategies of the lambda-calculus, both correctness and efficiency of implementation are valid concerns. While the notion of correctness is determined by the evaluation strategy, regarding efficiency there is a…

Programming Languages · Computer Science 2018-02-21 Koko Muroya , Dan R. Ghica

Programs with a continuous state space or that interact with physical processes often require notions of equivalence going beyond the standard binary setting in which equivalence either holds or does not hold. In this paper we explore the…

Logic in Computer Science · Computer Science 2021-10-28 Fredrik Dahlqvist , Renato Neves

Call graphs depict the static, caller-callee relation between "functions" in a program. With most source/target languages supporting functions as the primitive unit of composition, call graphs naturally form the fundamental control flow…

Software Engineering · Computer Science 2016-11-17 Ganesh M. Narayan , K. Gopinath , V. Sridhar

We propose Pushdown Normal Form (PDNF) Bisimulation to verify contextual equivalence in higher-order functional programming languages with local state. Similar to previous work on Normal Form (NF) bisimulation, PDNF Bisimulation is sound…

Programming Languages · Computer Science 2023-11-03 Vasileios Koutavas , Yu-Yang Lin , Nikos Tzevelekos

Programming languages are expected to support programmer's effort to structure program code. The ML module system, object systems and mixins are good examples of language constructs promoting modular programming. Among the three, mixins can…

Programming Languages · Computer Science 2009-08-26 Keiko Nakata

Program equivalence in linear contexts, where programs are used or executed exactly once, is an important issue in programming languages. However, existing techniques like those based on bisimulations and logical relations only target at…

Programming Languages · Computer Science 2011-10-12 Yuxin Deng , Yu Zhang