A computational logic handbook
A computational logic handbook
Handbook of logic in artificial intelligence and logic programming
The B-book: assigning programs to meanings
The B-book: assigning programs to meanings
An Industrial Strength Theorem Prover for a Logic Based on Common Lisp
IEEE Transactions on Software Engineering
An Introduction to Proving the Correctness of Programs
ACM Computing Surveys (CSUR)
Java Card Technology for Smart Cards: Architecture and Programmer's Guide
Java Card Technology for Smart Cards: Architecture and Programmer's Guide
Dynamic Logic
Derivation and Use of Induction Schemes in Higher-Order Logic
TPHOLs '97 Proceedings of the 10th International Conference on Theorem Proving in Higher Order Logics
A Dynamic Logic for the Formal Verification of Java Card Programs
JavaCard '00 Revised Papers from the First International Workshop on Java on Smart Cards: Programming and Security
Automatic Datapath Abstraction In Hardware Systems
Proceedings of the 7th International Conference on Computer Aided Verification
Proceedings of the 10th International Conference on Automated Deduction
Automatic Generation of Polynomial Loop Invariants: Algebraic Foundations
ISSAC '04 Proceedings of the 2004 international symposium on Symbolic and algebraic computation
Rippling: meta-level guidance for mathematical reasoning
Rippling: meta-level guidance for mathematical reasoning
On the structure of inductive reasoning: circular and tree-shaped proofs in the µ-calculus
FOSSACS'03/ETAPS'03 Proceedings of the 6th International conference on Foundations of Software Science and Computation Structures and joint European conference on Theory and practice of software
Verification by parallelization of parametric code
Algebraic and proof-theoretic aspects of non-classical logics
Verification of object-oriented software: The KeY approach
Verification of object-oriented software: The KeY approach
Journal of Symbolic Computation
Automating verification of loops by parallelization
LPAR'06 Proceedings of the 13th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Hi-index | 0.00 |
In this paper we develop a method for automatic construction of customised induction rules for use in a semiinteractive theorem prover. The induction rules are developed to prove the total correctness of loops in an imperative language. We concentrate on integers. First we compute a partition of the domain of the induction variable. Our method makes use of failed proof attempts in the theorem prover to gain information about the problem structure and create the partition. Then, based on this partition we create an induction rule, in destructor style, that is customised to make the proving of the loop simpler. Our concern is in user interaction, rather than in proof strength. Using the customised induction rules, we find that in comparison to standard (Peano) induction or Noetherian induction, the proofs become more modularised and simpler user interaction can be expected. Furthermore, by using destructor style induction we circumvent the problem of creating inverses of functions and we use the machinery of a theorem prover (with symbolic execution) to make the method automatic. We also show that the customised induction rules created by the method are sound.