4 research outputs found
Formalising FinFuns – Generating Code for Functions as Data from Isabelle/HOL
Abstract. FinFuns are total functions that are constant except for a fi-nite set of points, i.e. a generalisation of finite maps. We formalise them in Isabelle/HOL and present how to safely set up Isabelle’s code genera-tor such that operations like equality testing and quantification on Fin-Funs become executable. On the code output level, FinFuns are explicitly represented by constant functions and pointwise updates, similarly to as-sociative lists. Inside the logic, they behave like ordinary functions with extensionality. Via the update/constant pattern, a recursion combinator and an induction rule for FinFuns allow for defining and reasoning about operators on FinFuns that directly become executable. We apply the ap-proach to an executable formalisation of sets and use it for the semantics for a subset of concurrent Java.
A Machine-Checked, Type-Safe Model of Java Concurrency : Language, Virtual Machine, Memory Model, and Verified Compiler
The Java programming language provides safety and security guarantees such as type safety and its security architecture. They distinguish it from other mainstream programming languages like C and C++. In this work, we develop a machine-checked model of concurrent Java and the Java memory model and investigate the impact of concurrency on these guarantees. From the formal model, we automatically obtain an executable verified compiler to bytecode and a validated virtual machine