Theory of recursive functions and effective computability
Theory of recursive functions and effective computability
A computational logic handbook
A computational logic handbook
An approach to systems verification
Journal of Automated Reasoning
Functional instantiation in first-order logic
Artificial intelligence and mathematical theory of computation
Automated proofs of object code for a widely used microprocessor
Journal of the ACM (JACM)
Mechanized formal reasoning about programs and computing machines
Automated reasoning and its applications
A Mechanically Checked Proof of the AMD5K86TM Floating-Point Division Program
IEEE Transactions on Computers
High-speed, analyzable simulators
Computer-Aided reasoning
RTL verification: a floating-point multiplier
Computer-Aided reasoning
Java Virtual Machine Specification
Java Virtual Machine Specification
Computer-Aided Reasoning: An Approach
Computer-Aided Reasoning: An Approach
Structured Theory Development for a Mechanized Logic
Journal of Automated Reasoning
Induction Proofs with Partial Functions
Journal of Automated Reasoning
A Mechanically Checked Proof of Correctness of the AMD K5 Floating Point Square Root Microcode
Formal Methods in System Design
ACL2 Theorems About Commercial Microprocessors
FMCAD '96 Proceedings of the First International Conference on Formal Methods in Computer-Aided Design
Symbolic Simulation of the JEM1 Microprocessor
FMCAD '98 Proceedings of the Second International Conference on Formal Methods in Computer-Aided Design
Transforming the Theorem Prover into a Digital Design Tool: From Concept Car to Off-Road Vehicle
CAV '98 Proceedings of the 10th International Conference on Computer Aided Verification
Mechanically verifying real-valued algorithms in acl2
Mechanically verifying real-valued algorithms in acl2
Common Lisp: The Language
Quantification in tail-recursive function definitions
ACL2 '06 Proceedings of the sixth international workshop on the ACL2 theorem prover and its applications
Efficient execution in an automated reasoning environment
Journal of Functional Programming
A Mechanical Analysis of Program Verification Strategies
Journal of Automated Reasoning
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Adapting functional programs to higher order logic
Higher-Order and Symbolic Computation
Machine-code verification for multiple architectures: an application of decompilation into logic
Proceedings of the 2008 International Conference on Formal Methods in Computer-Aided Design
Mechanized information flow analysis through inductive assertions
Proceedings of the 2008 International Conference on Formal Methods in Computer-Aided Design
Transforming Programs into Recursive Functions
Electronic Notes in Theoretical Computer Science (ENTCS)
Verified LISP Implementations on ARM, x86 and PowerPC
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
Automatic verification for interactive graphical programs
Proceedings of the Eighth International Workshop on the ACL2 Theorem Prover and its Applications
Formal verification of LabVIEW programs using the ACL2 Theorem Prover
Proceedings of the Eighth International Workshop on the ACL2 Theorem Prover and its Applications
Proceedings of the Eighth International Workshop on the ACL2 Theorem Prover and its Applications
Strategic Issues, Problems and Challenges in Inductive Theorem Proving
Electronic Notes in Theoretical Computer Science (ENTCS)
Partial and Nested Recursive Function Definitions in Higher-order Logic
Journal of Automated Reasoning
Verification condition generation via theorem proving
LPAR'06 Proceedings of the 13th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Reasoning about incompletely defined programs
LPAR'05 Proceedings of the 12th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Partial recursive functions in higher-order logic
IJCAR'06 Proceedings of the Third international joint conference on Automated Reasoning
Science of Computer Programming
Hi-index | 0.00 |
We describe a method for introducing “partial functions” into ACL2, that is, functions not defined everywhere. The function “definitions” are actually admitted via the encapsulation principle: the new function symbol is constrained to satisfy the appropriate equation. This is permitted only when a witness function can be exhibited, establishing that the constraint is satisfiable. Of particular interest is the observation that every tail recursive definition can be witnessed in ACL2. We describe a macro that allows the convenient introduction of arbitrary tail recursive functions, and we discuss how such functions can be used to prove theorems about state machine models without reasoning about “clocks” or counting the number of steps until termination. Our macro for introducing “partial functions” also permits a variety of other recursive schemes, and we briefly illustrate some of them.