Searched for: +
(1 - 16 of 16)
document
Jung, Ralf (author), Jourdan, Jacques-Henri (author), Krebbers, R.J. (author), Dreyer, Derek (author)
Rust is a new systems programming language that promises to overcome the seemingly fundamental tradeoff between high-level safety guarantees and low-level control over resource management. Unfortunately, none of Rust's safety claims have been formally proven, and there is good reason to question whether they actually hold. Specifically, Rust...
journal article 2018
document
Kaiser, Jan-Oliver (author), Ziliani, Beta (author), Krebbers, R.J. (author), Régis-Gianas, Yann (author), Dreyer, Derek (author)
Coq supports a range of built-in tactics, which are engineered primarily to support backward reasoning. Starting from a desired goal, the Coq programmer can use these tactics to manipulate the proof state interactively, applying axioms or lemmas to break the goal into subgoals until all subgoals have been solved. Additionally, it provides...
journal article 2018
document
Krebbers, R.J. (author), Jourdan, Jacques-Henri (author), Jung, Ralf (author), Tassarotti, Joseph (author), Kaiser, Jan-Oliver (author), Timany, Amin (author), Charguéraud, Arthur (author), Dreyer, Derek (author)
A number of tools have been developed for carrying out separation-logic proofs mechanically using an interactive proof assistant. One of the most advanced such tools is the Iris Proof Mode (IPM) for Coq, which offers a rich set of tactics for making separation-logic proofs look and feel like ordinary Coq proofs. However, IPM is tied to a...
journal article 2018
document
Jung, Ralf (author), Krebbers, R.J. (author), Jourdan, Jacques-Henri (author), Bizjak, Aleš (author), Birkedal, Lars (author), Dreyer, Derek (author)
Iris is a framework for higher-order concurrent separation logic, which has been implemented in the Coq proof assistant and deployed very effectively in a wide variety of verification projects. Iris was designed with the express goal of simplifying and consolidating the foundations of modern separation logics, but it has evolved over time, and...
journal article 2018
document
Poulsen, C.B. (author), Rouvoet, A.J. (author), Tolmach, Andrew (author), Krebbers, R.J. (author), Visser, Eelco (author)
A definitional interpreter defines the semantics of an object language in terms of the (well-known) semantics of a host language, enabling understanding and validation of the semantics through execution. Combining a definitional interpreter with a separate type system requires a separate type safety proof. An alternative approach, at least for...
journal article 2018
document
Bizjak, Aleš (author), Gratzer, Daniel (author), Krebbers, R.J. (author), Birkedal, Lars (author)
Precise management of resources and the obligations they impose, such as the need to dispose of memory, close locks, and release file handles, is hardÐespecially in the presence of concurrency, when some resources are shared, and different threads operate on them concurrently. We present Iron, a novel higher-order concurrent<br/>separation logic...
journal article 2019
document
Frumin, Dan (author), Gondelman, Léon (author), Krebbers, R.J. (author)
Research into C verification often ignores that the C standard leaves the evaluation order of expressions unspecified, and assigns undefined behavior to write-write or read-write conflicts in subexpressions—so called “sequence point violations”. These aspects should be accounted for in verification because C compilers exploit them. We present a...
conference paper 2019
document
Rouvoet, A.J. (author), Poulsen, C.B. (author), Krebbers, R.J. (author), Visser, Eelco (author)
An intrinsically-typed definitional interpreter is a concise specification of dynamic semantics, that is executable and type safe by construction. Unfortunately, scaling intrinsically-typed definitional interpreters to more complicated object languages often results in definitions that are cluttered with manual proof work. For linearly-typed...
working paper 2020
document
Rouvoet, A.J. (author), van Antwerpen, H. (author), Poulsen, C.B. (author), Krebbers, R.J. (author), Visser, Eelco (author)
There is a large gap between the specification of type systems and the implementation of their type checkers, which impedes reasoning about the soundness of the type checker with respect to the specification. A vision to close this gap is to automatically obtain type checkers from declarative programming language specifications. This moves...
journal article 2020
document
Hinrichsen, J.K. (author), Bengtson, Jesper (author), Krebbers, R.J. (author)
Message passing is a useful abstraction to implement concurrent programs. For real-world systems, however, it is often combined with other programming and concurrency paradigms, such as higher-order functions, mutable state, shared-memory concurrency, and locks. We present Actris: a logic for proving functional correctness of programs that...
journal article 2020
document
Giarrusso, P.G. (author), Stefanesco, Leo (author), Timany, Amin (author), Birkedal, Lars (author), Krebbers, R.J. (author)
The metatheory of Scala's core type system - the Dependent Object Types (DOT) calculus - is hard to extend, like the metatheory of other type systems combining subtyping and dependent types. Soundness of important Scala features therefore remains an open problem in theory and in practice. To address some of these problems, we use a semantics...
journal article 2020
document
van Gelder, P.H.A.J.M. (author), Taebi, B. (author), van Ommen, J.R. (author), van de Poel, I.R. (author), Asveld, L. (author), Balkenende, R. (author), Hollmann, F. (author), van Kampen, E. (author), Krebbers, R.J. (author), de Lange, J. (author), Terwel, K.C. (author), Visser, Eelco (author)
In this paper, we provide an overview of how Safe-by-Design is conceived and applied in practice in a large number of engineering disciplines. We discuss the differences, commonalities, and possibilities for mutual learning found in those practices and identify several ways of putting those disciplinary outlooks in perspective. The considered...
journal article 2021
document
Frumin, Dan (author), Krebbers, R.J. (author), Birkedal, Lars (author)
Non-interference is a program property that ensures the absence of information leaks. In the context of programming languages, there exist two common approaches for establishing non-interference: type systems and program logics. Type systems provide strong automation (by means of type checking), but they are inherently restrictive in the kind...
conference paper 2021
document
Hinrichsen, Jonas Kastberg (author), Louwrink, Daniël (author), Krebbers, R.J. (author), Bengtson, Jesper (author)
Session types- A family of type systems for message-passing concurrency-have been subject to many extensions, where each extension comes with a separate proof of type safety. These extensions cannot be readily combined, and their proofs of type safety are generally not machine checked, making their correctness less trustworthy. We overcome...
conference paper 2021
document
Rouvoet, A.J. (author), Krebbers, R.J. (author), Visser, Eelco (author)
To avoid compilation errors it is desirable to verify that a compiler is type correct-i.e., given well-typed source code, it always outputs well-typed target code. This can be done intrinsically by implementing it as a function in a dependently typed programming language, such as Agda. This function manipulates data types of well-typed source...
journal article 2021
document
Hinrichsen, Jonas Kastberg (author), Bengtson, Jesper (author), Krebbers, R.J. (author)
Message passing is a useful abstraction for implementing concurrent programs. For real-world systems, however, it is often combined with other programming and concurrency paradigms, such as higher-order functions, mutable state, shared-memory concurrency, and locks. We present Actris: a logic for proving functional correctness of programs...
journal article 2022
Searched for: +
(1 - 16 of 16)