An attack on the Needham-Schroeder public-key authentication protocol
Information Processing Letters
Strand spaces: proving security protocols correct
Journal of Computer Security
Introduction to Functional Programming
Introduction to Functional Programming
Proof Plans for the Correction of False Conjectures
LPAR '94 Proceedings of the 5th International Conference on Logic Programming and Automated Reasoning
Concept Formation via Proof Planning Failure
LPAR '01 Proceedings of the Artificial Intelligence on Logic for Programming
Deductive Search for Errors in Free Data Type Specifications Using Model Generation
CADE-18 Proceedings of the 18th International Conference on Automated Deduction
The Use of Explicit Plans to Guide Inductive Proofs
Proceedings of the 9th International Conference on Automated Deduction
The Use of Abduction and Recursion-Editor Techniques for the Correction of Faulty Conjectures
ASE '00 Proceedings of the 15th IEEE international conference on Automated software engineering
Predicate Synthesis for Correcting Faulty Conjectures: The Proof Planning Paradigm
Automated Software Engineering
An Efficient Cryptographic Protocol Verifier Based on Prolog Rules
CSFW '01 Proceedings of the 14th IEEE workshop on Computer Security Foundations
Attacking Group Protocols by Refuting Incorrect Inductive Conjectures
Journal of Automated Reasoning
A Method for Patching Interleaving-Replay Attacks in Faulty Security Protocols
Electronic Notes in Theoretical Computer Science (ENTCS)
The Importance of Non-theorems and Counterexamples in Program Verification
Verified Software: Theories, Tools, Experiments
On the Automated Correction of Protocols with Improper Message Encoding
Foundations and Applications of Security Analysis
On the automated correction of security protocols susceptible to a replay attack
ESORICS'07 Proceedings of the 12th European conference on Research in Computer Security
Hi-index | 0.00 |
In the formal methods approach to software verification, we use logical formulae to model both the program and its intended specification, and, then, we apply (automated) reasoning techniques to demonstrate that the formulae satisfy a verification conjecture. One may either apply proving techniques, to provide a formal verification argument, or disproving techniques to falsify the verification conjecture. However, programs often contain bugs or are flawed, and, so, the verification process breaks down. Interpreting the failed proof attempt or the counterexample, if any, is very valuable, since it potentially helps identifying the program bug or flaw. Lakatos, in his book Proofs and Refutations, argues that the analysis of a failed proof often holds the key for the development of a theory. Proof analysis enables the strengthening of naïve conjectures and concepts, without severely weakening its content. In this paper, we survey our encounters on the productive use of failure in the context of a few theories, natural numbers and (higher-order) lists, and in the context of security protocols.