English
Related papers

Related papers: A Type System for Tom

200 papers

Predicate subtypes provide an attractive mechanism to specify range constraints on variable declarations. This paper discusses how we add support for predicate subtypes to the VerCors program verifier. Our approach automatically generates…

Logic in Computer Science · Computer Science 2026-04-09 Tycho Dubbeling , Marieke Huisman , Ömer Şakar

Higher-order logic HOL offers a very simple syntax and semantics for representing and reasoning about typed data structures. But its type system lacks advanced features where types may depend on terms. Dependent type theory offers such a…

Logic in Computer Science · Computer Science 2023-05-25 Colin Rothgang , Florian Rabe , Christoph Benzmüller

Creating good type error messages for constraint-based type inference systems is difficult. Typical type error messages reflect implementation details of the underlying constraint-solving algorithms rather than the specific factors leading…

Programming Languages · Computer Science 2024-02-21 Ishan Bhanuka , Lionel Parreaux , David Binder , Jonathan Immanuel Brachthäuser

TLA+ is a formal language for specifying systems, including distributed algorithms, that is supported by powerful verification tools. In this work we present a framework for relating traces of distributed programs to high-level…

Programming Languages · Computer Science 2024-09-18 Horatiu Cirstea , Markus A. Kuppe , Benjamin Loillier , Stephan Merz

Context: Trait composition has inspired new research in the area of code reuse for object oriented (OO) languages. One of the main advantages of this kind of composition is that it makes possible to separate subtyping from subclassing;…

Programming Languages · Computer Science 2019-02-05 Hrshikesh Arora , Marco Servetto , Bruno C. D. S. Oliveira

Code completion is a key feature of Integrated Development Environments (IDEs), aimed at predicting the next tokens a developer is likely to write, helping them write code faster and with less effort. Modern code completion approaches are…

Software Engineering · Computer Science 2024-03-25 Matteo Ciniselli , Alberto Martin-Lopez , Gabriele Bavota

Graph rewriting is a popular tool for the optimisation and modification of graph expressions in domains such as compilers, machine learning and quantum computing. The underlying data structures are often port graphs - graphs with labels at…

Data Structures and Algorithms · Computer Science 2025-03-27 Luca Mondada , Pablo Andrés-Martínez

We present a logically principled foundation for systematizing, in a way that works with any computational effect and evaluation order, SMT constraint generation seen in refinement type systems for functional programming languages. By…

Programming Languages · Computer Science 2023-08-21 Dimitrios J. Economou , Neel Krishnaswami , Jana Dunfield

In recent years, there has been an increased interest in tools that establish \emph{incorrectness} rather than correctness of program properties. In this work we build on this approach by developing a novel methodology to prove…

Programming Languages · Computer Science 2024-09-24 Kelvin Qian , Scott Smith , Brandon Stride , Shiwei Weng , Ke Wu

We introduce type annotations as a flexible typing mechanism for graph systems and discuss their advantages with respect to classical typing based on graph morphisms. In this approach the type system is incorporated with the graph and…

Software Engineering · Computer Science 2016-12-07 Paolo Bottoni , Andrew Fish , Francesco Parisi Presicce

Typestates are state machines used in object-oriented programming to specify and verify correct order of method calls on an object. To avoid inconsistent object states, typestates enforce linear typing, which eliminates - or at best limits…

Programming Languages · Computer Science 2021-07-29 Mathias Jakobsen , Alice Ravier , Ornela Dardha

We extend prior work on class-morphing to provide a more expressive pattern-based compile-time reflection language. Our MorphJ language offers a disciplined form of metaprogramming that produces types by statically iterating over and…

Programming Languages · Computer Science 2015-06-18 Aggelos Biboudis , George Fourtounis , Yannis Smaragdakis

We describe a generative approach that enables concurrent typestate-oriented programming in Java and other mainstream languages. The approach allows programmers to implement objects exposing a state-sensitive interface using a high-level…

Programming Languages · Computer Science 2019-04-03 Rosita Gerbo , Luca Padovani

Program comprehension concerns the ability of an individual to make an understanding of an existing software system to extend or transform it. Software systems comprise of data that are noisy and missing, which makes program understanding…

Software Engineering · Computer Science 2019-02-05 Amir Saeidi , Jurriaan Hage , Ravi Khadka , Slinger Jansen

Coverage Types provide a suitable type mechanism that integrates under-approximation logic to support Property-Based Testing. They are used to type the return value of a function that represents an input test generator. This allows us to…

Logic in Computer Science · Computer Science 2025-02-25 Angelo Passarelli , Gian-Luigi Ferrari

Large language models (LLMs) have shown astonishing capability of generating software code, leading to its use to support developers in programming. Proposed tools have relied either on assistants for improved auto-complete or multi-agents,…

Software Engineering · Computer Science 2026-04-10 Jorge Melegati

ReScript is a strongly typed language that targets JavaScript, as an alternative to gradually typed languages, such as TypeScript. In this paper, we present a sound type system for data-flow analysis for a subset of the ReScript language,…

Logic in Computer Science · Computer Science 2024-11-01 Nicky Ask Lund , Hans Hüttel

Extensible variants improve the modularity and expressiveness of programming languages: they allow program functionality to be decomposed into independent blocks, and allow seamless extension of existing code with both new cases of existing…

Programming Languages · Computer Science 2016-12-28 J. Garrett Morris

With this paper, we survey techniques for improving the predictive accuracy of pretrained large language models by allocating additional compute at inference time. In categorizing test-time scaling methods, we place special emphasis on how…

Computation and Language · Computer Science 2025-11-20 Zhuoyi Yang , Xu Guo , Tong Zhang , Huijuan Xu , Boyang Li

We propose a type-based resource usage analysis for the π-calculus extended with resource creation/access primitives. The goal of the resource usage analysis is to statically check that a program accesses resources such as files and…

Programming Languages · Computer Science 2017-01-11 Naoki Kobayashi , Kohei Suenaga , Lucian Wischik