We introduce Jinja, a Java-like programming language with a formal semantics designed to exhibit core features of the Java language architecture. Jinja is a compromise between the realism of the language and the tractability and clarity of its formal semantics. The following aspects are formalised: a big and a small step operational semantics for Jinja and… (More)
Intelligible semi-automated reasoning (Isar) is a generic approach to readable formal proof documents. It sets out to bridge the semantic gap between any internal notions of proof based on primitive inferences and tactics, and an appropriate level of abstraction for user-level work. The Isar formal proof language has been designed to satisfy quite… (More)
We study the type inference problem for a system with type classes as in the functional programming language Haskell. Type classes are an extension of ML-style polymorphism with overloading. We generalize Milner's work on polymorphism by introducing a separate context constraining the type variables in a typing judgement. This lead to simple type inference… (More)
This manual describes Isabelle's formalization of Higher-Order Logic, a poly-morphic version of Church's Simple Theory of Types. HOL can be best understood as a simply-typed version of classical set theory. The monograph Isabelle/HOL — A Proof Assistant for Higher-Order Logic provides a gentle introduction on using Isabelle/HOL in practice.