Implementing mathematics with the Nuprl proof development system
Implementing mathematics with the Nuprl proof development system
The temporal logic of reactive and concurrent systems
The temporal logic of reactive and concurrent systems
A note on complexity measures for inductive classes in constructive type theory
Information and Computation
Semantic Foundations for Embedding HOL in Nuprl
AMAST '96 Proceedings of the 5th International Conference on Algebraic Methodology and Software Technology
A Verified Model Checker for the Modal µ-calculus in Coq
TACAS '98 Proceedings of the 4th International Conference on Tools and Algorithms for Construction and Analysis of Systems
Experiments in Theorem Proving and Model Checking for Protocol Verification
FME '96 Proceedings of the Third International Symposium of Formal Methods Europe on Industrial Benefit and Advances in Formal Methods
Protocol Verification in Nuprl
CAV '98 Proceedings of the 10th International Conference on Computer Aided Verification
An Integration of Model Checking with Automated Proof Checking
Proceedings of the 7th International Conference on Computer Aided Verification
Proceedings of the 7th International Conference on Computer Aided Verification
Hi-index | 0.00 |
Abstraction is a useful tool in verification, often allowing the proof of correctness of a large and complex system to be reduced to showing the correctness of a much smaller simpler system. We use the Nuprl theorem prover to verify the correctness of a simple but commonly occurring abstraction. From the formal proof, we extract a program that succeeds when the abstraction method is applicable to the concrete input specification and in this case, computes the abstracted system specification. One of the main novelties of our work is our "implicit syntax" approach to formal metatheory of programming languages. Our proof relies entirely on semantic reasoning, and thus avoids the complications that often arise when formally reasoning about syntax. The semantic reasoning contains an implicit construction of the result using inductive predicates over semantic domains that express representability in a particular protocol language. This implicit construction is what allows the synthesis of a program that transforms a concrete specification to an abstract one via recursion on syntax.