22 research outputs found
Witnessing (co)datatypes
Datatypes and codatatypes are useful for specifying and reasoning about (possibly infinite) computational processes. The Isabelle/HOL proof assistant has recently been extended with a definitional package that supports both. We describe a complete procedure for deriving nonemptiness witnesses in the general mutually recursive, nested case—nonemptiness being a proviso for introducing types in higher-order logic
NaDeA: A Natural Deduction Assistant with a Formalization in Isabelle
We present a new software tool for teaching logic based on natural deduction.
Its proof system is formalized in the proof assistant Isabelle such that its
definition is very precise. Soundness of the formalization has been proved in
Isabelle. The tool is open source software developed in TypeScript / JavaScript
and can thus be used directly in a browser without any further installation.
Although developed for undergraduate computer science students who are used to
study and program concrete computer code in a programming language we consider
the approach relevant for a broader audience and for other proof systems as
well.Comment: Proceedings of the Fourth International Conference on Tools for
Teaching Logic (TTL2015), Rennes, France, June 9-12, 2015. Editors: M.
Antonia Huertas, Jo\~ao Marcos, Mar\'ia Manzano, Sophie Pinchinat,
Fran\c{c}ois Schwarzentrube
A formalized general theory of syntax with bindings
We present the formalization of a theory of syntax with bindings that has been developed and refined over the last decade to support several large formalization efforts. Terms are defined for an arbitrary number of constructors of varying numbers of inputs, quotiented to alpha-equivalence and sorted according to a binding signature. The theory includes a rich collection of properties of the standard operators on terms, such as substitution and freshness. It also includes induction and recursion principles and support for semantic interpretation, all tailored for smooth interaction with the bindings and the standard operators