An efficient augmented-context-free parsing algorithm
Computational Linguistics
A framework for defining logics
Journal of the ACM (JACM)
Compiling Natural Semantics
Compiling language definitions: the ASF+SDF compiler
ACM Transactions on Programming Languages and Systems (TOPLAS)
Handbook of automated reasoning
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
A Proof Environment for Teaching Mathematics
Journal of Automated Reasoning
Ott: effective tool support for the working semanticist
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
Mechanized metatheory for the masses: the PoplMark challenge
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
Practical Foundations for Programming Languages
Practical Foundations for Programming Languages
Ott: Effective tool support for the working semanticist
Journal of Functional Programming
A theory of typestate-oriented programming
Proceedings of the 12th Workshop on Formal Techniques for Java-Like Programs
Teaching experience: logic and formal methods with coq
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
Hi-index | 0.00 |
Teaching and learning formal programming language theory is hard, in part because it's easy to make mistakes and hard to find them. Proof assistants can help check proofs, but their learning curve is too steep to use in most classes, and is a barrier to researchers too. In this paper we present SASyLF, an LF-based proof assistant specialized to checking theorems about programming languages and logics. SASyLF has a simple design philosophy: language and logic syntax, semantics, and meta-theory should be written as closely as possible to the way it is done on paper. We describe how we designed the SASyLF syntax to be accessible to students learning type theory, and how students can understand its semantics directly in terms of the theory they are taught in class. SASyLF can express proofs typical of an introductory graduate type theory course. SASyLF proofs are generally very explicit, but its built-in support for variable binding provides substitution properties for free and avoids awkward variable encodings. We describe preliminary experience teaching with SASyLF.