Type systems for programming languages shall detect type errors in programs before runtime. To ensure that a type system meets this requirement, its soundness must be formally verified. We aim at automating soundness proofs of type systems to facilitate the development of sound type systems for domain-specific languages. Soundness proofs for type systems typically require induction. However, many of the proofs of individual induction cases only require first-order reasoning. For the development of our workbench Veritas, we build on this observation by combining automated first-order theorem provers such as Vampire with automated proof strategies specific to type systems. In this paper, we describe how we encode type soundness proofs in firs...
Because of our increasing dependence on software in every aspect of our lives, it is crucial that ou...
Machine-checked proofs of properties of programming languages have gained in importance significantl...
Exploration of language specifications helps to discover errors and inconsistencies early during the...
Type systems for programming languages shall detect type errors in programs before runtime. To ensur...
The correct definition and implementation of non-trivial type systems is difficult and requires expe...
The correct definition and implementation of non-trivial type systems is difficult and requires expe...
The correct definition and implementation of non-trivial type systems is difficult and requires expe...
Type systems for static programming languages are supposed to ensure the absence of type errors in c...
Developing provably sound type systems is a non-trivial task which, as of today, typically requires ...
We show how programming language semantics and definitions of their corresponding type systems can b...
systems using current techniques are notorious for straight-forward but tedious inductions involving...
The logic programming refinement calculus is a method for transforming specifications to executable ...
AbstractThis paper presents a new approach to the problem of guaranteeing that definite logic progra...
Language extensions introduce high-level programming constructs that protect programmers from low-le...
AbstractA theory for a type system for logic programs is developed which addressesthe question of we...
Because of our increasing dependence on software in every aspect of our lives, it is crucial that ou...
Machine-checked proofs of properties of programming languages have gained in importance significantl...
Exploration of language specifications helps to discover errors and inconsistencies early during the...
Type systems for programming languages shall detect type errors in programs before runtime. To ensur...
The correct definition and implementation of non-trivial type systems is difficult and requires expe...
The correct definition and implementation of non-trivial type systems is difficult and requires expe...
The correct definition and implementation of non-trivial type systems is difficult and requires expe...
Type systems for static programming languages are supposed to ensure the absence of type errors in c...
Developing provably sound type systems is a non-trivial task which, as of today, typically requires ...
We show how programming language semantics and definitions of their corresponding type systems can b...
systems using current techniques are notorious for straight-forward but tedious inductions involving...
The logic programming refinement calculus is a method for transforming specifications to executable ...
AbstractThis paper presents a new approach to the problem of guaranteeing that definite logic progra...
Language extensions introduce high-level programming constructs that protect programmers from low-le...
AbstractA theory for a type system for logic programs is developed which addressesthe question of we...
Because of our increasing dependence on software in every aspect of our lives, it is crucial that ou...
Machine-checked proofs of properties of programming languages have gained in importance significantl...
Exploration of language specifications helps to discover errors and inconsistencies early during the...