Verified Programming of Turing Machines in Coq
We present a framework for the verified programming of multi-tape Turing machines in Coq. Improving on prior work by Asperti and Ricciotti in Matita, we implement multiple layers of abstraction. The highest layer allows a user to implement nontrivial algorithms as Turing machines and verify their correctness, as well as time and space complexity compositionally. The user can do so without ever mentioning states, symbols on tapes or transition functions: They write programs in an imperative language with registers containing values of encodable data types, and our framework constructs corresponding Turing machines.
As case studies, we verify a translation from multi-tape to single-tape machines as well as a universal Turing machine, both with polynomial time overhead and constant factor space overhead.
Mon 20 JanDisplayed time zone: Saskatchewan, Central America change
15:35 - 16:40 | |||
15:35 21mTalk | Verified Programming of Turing Machines in Coq CPP Yannick Forster Saarland University, Fabian Kunze Saarland University, Maximilian Wuttke Saarland University DOI Pre-print Media Attached | ||
15:56 21mTalk | A Functional Proof Pearl: Inverting the Ackermann Hierarchy CPP Linh Tran National University of Singapore, Anshuman Mohan National University of Singapore, Aquinas Hobor National University of Singapore DOI Pre-print Media Attached | ||
16:18 21mTalk | Undecidability of Higher-Order Unification Formalised in Coq CPP DOI Pre-print Media Attached |