Common LISP: the language
IMPS: an interactive mathematical proof system
Journal of Automated Reasoning
Manifest types, modules, and separate compilation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type-theoretic approach to higher-order modules with sharing
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Units: cool modules for HOT languages
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Desiderata for the standardization of LISP
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Computer-Aided Reasoning: An Approach
Computer-Aided Reasoning: An Approach
The Definition of Standard ML
Composable and compilable macros:: you want it when?
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Structured Theory Development for a Mechanized Logic
Journal of Automated Reasoning
DrScheme: a programming environment for Scheme
Journal of Functional Programming
Programming in Modula-2
From structures and functors to modules and units
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
ACL2 '06 Proceedings of the sixth international workshop on the ACL2 theorem prover and its applications
Engineering Software Correctness
Journal of Functional Programming
Mixin' up the ML module system
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Functional programming and theorem proving for undergraduates: a progress report
Proceedings of the 2008 international workshop on Functional and declarative programming in education
Hi-index | 0.00 |
ACL2, a Common Lisp-based language for programming and theorem proving, has enjoyed industrial success despite lacking modern language features such as a module system. In previous work, we equipped ACL2 with modules, interfaces, and explicit linking and measured our system with a series of experiments. One experiment revealed a serious lack of expressivity; the interfaces cannot describe the induction schemes necessary to reason about exported functions with nontrivial patterns of recursion. In this paper we revise our language, Modular ACL2, to overcome this weakness. The first novelty is the inclusion of manifest function definitions in interfaces from which ACL2 can infer induction schemes. The second novelty consists of the first proofs of soundness and expressivity for Modular ACL2; we also reaffirm the usefulness of our system with updated benchmarks.