280 research outputs found
Concrete Semantics with Coq and CoqHammer
The "Concrete Semantics" book gives an introduction to imperative programming
languages accompanied by an Isabelle/HOL formalization. In this paper we
discuss a re-formalization of the book using the Coq proof assistant. In order
to achieve a similar brevity of the formal text we extensively use CoqHammer,
as well as Coq Ltac-level automation. We compare the formalization efficiency,
compactness, and the readability of the proof scripts originating from a Coq
re-formalization of two chapters from the book
TRX: A Formally Verified Parser Interpreter
Parsing is an important problem in computer science and yet surprisingly
little attention has been devoted to its formal verification. In this paper, we
present TRX: a parser interpreter formally developed in the proof assistant
Coq, capable of producing formally correct parsers. We are using parsing
expression grammars (PEGs), a formalism essentially representing recursive
descent parsing, which we consider an attractive alternative to context-free
grammars (CFGs). From this formalization we can extract a parser for an
arbitrary PEG grammar with the warranty of total correctness, i.e., the
resulting parser is terminating and correct with respect to its grammar and the
semantics of PEGs; both properties formally proven in Coq.Comment: 26 pages, LMC
A Mechanized Proof of a Textbook Type Unification Algorithm
Unification is the core of type inference algorithms for modern functional programming languages, like Haskell and SML. As a first step towards a formalization of a type inference algorithm for such programming languages, we present a formalization in Coq of a type unification algorithm that follows classic algorithms presented in programming language textbooks. We also report on the use of such formalization to build a correct type inference algorithm for the simply typed λ-calculus
- …