Trends in Functional Programming
18th International Symposium, TFP 2017, Canterbury, UK, June 19-21, 2017, Revised Selected Papers
Chapter and Conference Paper
We present a denotational semantics for weak memory concurrency that avoids thin-air reads, provides data-race free programs with sequentially consistent semantics (DRF-SC), and supports a compositional refinemen...
Book and Conference Proceedings
18th International Symposium, TFP 2017, Canterbury, UK, June 19-21, 2017, Revised Selected Papers
Chapter and Conference Paper
Software verification tools that build machine-checked proofs of functional correctness usually focus on the algorithmic content of the code. Their proofs are not grounded in a formal semantic model of the env...
Article
We present a mechanised semantics for higher-order logic (HOL), and a proof of soundness for the inference system, including the rules for making definitions, implemented by the kernel of the HOL Light theorem...
Chapter and Conference Paper
Guardol is a domain-specific language focused on the creation of high-assurance cross-domain systems (i.e., network guards). The Guardol system generates executable code from Guardol programs while also providing...
Chapter and Conference Paper
When doing an interactive proof about a piece of software, it is important that the underlying programming language’s semantics does not make the proof unnecessarily difficult or unwieldy. Both small-step and ...
Article
Although research published during the past year suggests the prevalence of childhood obesity in the USA may have plateaued, it remains unacceptably high and places large numbers of youths at elevated risk of ...
Article
Our understanding of the relationships between cardiometabolic risk factors in young people and lifestyle, physiology and genetics continues to grow. This review examines research published during the past 12 ...
Chapter and Conference Paper
We present a mechanised semantics and soundness proof for the HOL Light kernel including its definitional principles, extending Harrison’s verification of the kernel without definitions. Soundness of the logic...
Chapter and Conference Paper
This short paper describes our plans and progress towards construction of verified ML implementations of HOL Light: the first formally proved soundness result for an LCF-style prover. Building on Harrison’s fo...
Chapter and Conference Paper
The growing complexity of hardware optimizations employed by multiprocessors leads to subtle distinctions among allowed and disallowed behaviors, posing challenges in specifying their memory models formally an...
Chapter and Conference Paper
Many ITP developments exist in the context of a single prover, and are dominated by proof effort. In contrast, when applying rigorous semantic techniques to realistic computer systems, engineering the definiti...
Chapter
We discuss the front end of a compiler whose source language is a subset of higher order logic. The compiler operates by a series of source-to-source transformations in which each transformation step performs ...
Chapter and Conference Paper
With the rise of multi-core processors, shared-memory concurrency has become a widespread feature of computation, from hardware, to operating systems, to programming languages such as C++ and Java. However, no...
Chapter and Conference Paper
Real multiprocessors do not provide the sequentially consistent memory that is assumed by most work on semantics and verification. Instead, they have relaxed memory models, typically described in ambiguous pro...
Article
Higher-order logic proof systems combine functional programming with logic, providing functional programmers with a comfortable setting for the formalization of programs, specifications, and proofs. However, a...
Chapter and Conference Paper
Few programming languages have a mathematically rigorous definition or metatheory—in part because they are perceived as too large and complex to work with. This paper demonstrates the feasibility of such under...
Article
A compiler from a synthesisable subset of higher order logic to clocked synchronous hardware is described. It is being used to create coprocessors for cryptographic and arithmetic applications. The compiler au...
Chapter and Conference Paper
We give an overview of a proof-producing compiler which translates recursion equations, defined in higher order logic, to assembly language. The compiler is implemented and validated with a mix of translation ...
Chapter and Conference Paper
In this paper, we show how to combine a component system and a macro system. A component system separates the definition of a program fragment from the statements that link it, enabling independent compilation...