English
Related papers

Related papers: Refinement Types: A Tutorial

200 papers

Before we combine actions and probabilities two very obvious questions should be asked. Firstly, what does "the probability of an action" mean? Secondly, how does probability interact with nondeterminism? Neither question has a single…

Software Engineering · Computer Science 2011-06-22 Steve Reeves , David Streader

Formal specification techniques allow expressing idealized specifications, which abstract from restrictions that may arise in implementations. However, partial implementations are universal in software development due to practical…

Logic in Computer Science · Computer Science 2013-05-28 Emil Sekerinski , Tian Zhang

Refinement is a fundamental technique in the verification and systematic development of computer programs. It supports a disciplined approach to software construction through stepwise refinement, whereby an abstract specification is…

Logic in Computer Science · Computer Science 2026-02-20 Yuan Feng , Li Zhou

Probing classifiers have emerged as one of the prominent methodologies for interpreting and analyzing deep neural network models of natural language processing. The basic idea is simple -- a classifier is trained to predict some linguistic…

Computation and Language · Computer Science 2021-09-23 Yonatan Belinkov

Pluggable type systems allow programmers to extend the type system of a programming language to enforce semantic properties defined by the programmer. Pluggable type systems are difficult to deploy in legacy codebases because they require…

Software Engineering · Computer Science 2025-10-06 Kazi Amanul Islam Siddiqui , Martin Kellogg

Session types are abstractions of communication protocols enabling the static analysis of message-passing processes. Refinement notions for session types are key to support safe forms of process substitution while preserving their…

Programming Languages · Computer Science 2025-06-09 Mario Bravetti , Luca Padovani , Gianluigi Zavattaro

There are two ways to check if a program is correct, namely execute it or review it. While executing a program is the ultimate test for its correctness reviewing the program can occur earlier in its development and find problems if done…

Software Engineering · Computer Science 2024-07-03 Scott Ballentine , Eitan Farchi

Context. An extension method is a method declared in a package other than the package of its host class. Thanks to extension methods, developers can adapt to their needs classes they do not own: adding methods to core classes is a typical…

Programming Languages · Computer Science 2017-08-08 Guillermo Polito , Camille Teruel , Stéphane Ducasse , Luc Fabresse

Types in logic programming have focused on conservative approximations of program semantics by regular types, on one hand, and on type systems based on a prescriptive semantics defined for typed programs, on the other. In this paper, we…

Logic in Computer Science · Computer Science 2019-09-19 João Barbosa , Mário Florido , Vítor Santos Costa

Strictness analysis is critical to efficient implementation of languages with non-strict evaluation, mitigating much of the performance overhead of laziness. However, reasoning about strictness at the source level can be challenging and…

Programming Languages · Computer Science 2026-01-12 Daniel Sainati , Joseph W. Cutler , Benjamin C. Pierce , Stephanie Weirich

Refinement calculus is a powerful and expressive tool for reasoning about sequential programs in a compositional manner. In this paper we present an extension of refinement calculus for reactive systems. Refinement calculus is based on…

Software Engineering · Computer Science 2014-06-24 Viorel Preoteasa , Stavros Tripakis

We previously developed a polymorphic type system and a type checker for a multithreaded lock-based polymorphic typed assembly language (MIL) that ensures that well-typed programs do not encounter race conditions. This paper extends such…

Programming Languages · Computer Science 2010-02-05 Vasco T. Vasconcelos , Francisco Martins , Tiago Cogumbreiro

Relational program verification is a variant of program verification where one can reason about two programs and as a special case about two executions of a single program on different inputs. Relational program verification can be used for…

Programming Languages · Computer Science 2019-10-23 Alejandro Aguirre , Gilles Barthe , Marco Gaboardi , Deepak Garg , Pierre-Yves Strub

Test Amplification is a method to extend handwritten tests into a more rigorous test suite covering corner cases in the system under test. Unfortunately, the current state-of-the-art for test amplification heavily relies on program analysis…

Software Engineering · Computer Science 2021-12-22 Ebert Schoofs , Mehrdad Abdi , Serge Demeyer

Dependent types help programmers write highly reliable code. However, this reliability comes at a cost: it can be challenging to write new prototypes in (or migrate old code to) dependently-typed programming languages. Gradual typing makes…

Programming Languages · Computer Science 2019-08-23 Joseph Eremondi , Éric Tanter , Ronald Garcia

Type analyses of logic programs which aim at inferring the types of the program being analyzed are presented in a unified abstract interpretation-based framework. This covers most classical abstract interpretation-based type analyzers for…

Software Engineering · Computer Science 2009-09-29 Claudio Vaucheret , Francisco Bueno

Unified Modeling Language (UML) is the de facto standard for requirements modeling and system design. UML as a visual language can tremendously help customers, project managers, and developers to specify the requirements of a target system.…

Software Engineering · Computer Science 2019-01-09 Yilong Yang , Jing Yang , Xiaoshan Li

A type system combining type application, constants as types, union types (associative, commutative and idempotent) and recursive types has recently been proposed for statically typing path polymorphism, the ability to define functions that…

Logic in Computer Science · Computer Science 2020-06-30 Juan Edi , Andrés Viso , Eduardo Bonelli

We introduce Refinement Reflection, a new framework for building SMT-based deductive verifiers. The key idea is to reflect the code implementing a user-defined function into the function's (output) refinement type. As a consequence, at uses…

Programming Languages · Computer Science 2019-07-16 Niki Vazou , Anish Tondwalkar , Vikraman Choudhury , Ryan G. Scott , Ryan R. Newton , Philip Wadler , Ranjit Jhala

Session types statically prescribe bidirectional communication protocols for message-passing processes and are in a Curry-Howard correspondence with linear logic propositions. However, simple session types cannot specify properties beyond…

Programming Languages · Computer Science 2020-01-27 Ankush Das , Frank Pfenning