... ACM, 12, 1969. [4] Tudor Jebelean, Laura Kovacs, and Nikolaj Popov. Verification of imperativ... more ... ACM, 12, 1969. [4] Tudor Jebelean, Laura Kovacs, and Nikolaj Popov. Verification of imperative programs in theorema. In 1st South-East European Work-shop in Formal Methods (SEEFM03), 2003. Thessaloniki, Greece, 20 November 2003. [5] B. Buchberger; F. Lichtenberger. ...
We present a verification environment for imperative pro- grams (using Hoare logic) and for funct... more We present a verification environment for imperative pro- grams (using Hoare logic) and for functional programs (using fixpoint theory) in the frame of the Theorema system (www.theorema.org). In particular, we discuss some methods for finding the invariants of loops and of specifications of auxiliary tail recursive functions. These meth- ods use algorithms from (polynomial) algebra and combinatorics, namely Groebner bases,
We describe practical experiments of program verification in the frame of the Theorema system (ww... more We describe practical experiments of program verification in the frame of the Theorema system (www.theorema.org). This includes both functional programs (using fixpoint theory), as well as imperative programs (using Hoare logic). By comparing dierent approaches we are trying to find general schemes which are useful for practical work. The Theorema system oers facilities for working with higher-order predicate logic formulae
We report work in progress concerning the theoretical basis and the implementation in the Theorem... more We report work in progress concerning the theoretical basis and the implementation in the Theorema system of a methodology for the generation of verification conditions for recursive procedures, with the aim of practical verification of recursive programs. Proving total correctness is achieved by proving separately partial correctness and then termination. In contrast to other approaches, which use a special theory describing the behavior of programs, we use such a theory only "in the background", for developing a general rule for generating verification conditions, while the conditions themselves are presented (and provable) using the theories relevant to the program text only. This is very important for automatic proving, since it reduces significantly the effort of the provers. We present practical experiments in which several programs are completely verified using our verification condition generator and the provers of the Theorema system.
We present an experimental prototype environment for defining and verifying recursive functional ... more We present an experimental prototype environment for defining and verifying recursive functional programs, which is part of the Theorema system. A distinctive feature of our approach is the hint on "what is wrong" in case of a verification failure. The prototype is designed in order to improve the education of future software engineers by exposing them to successful examples of using formal methods (and in particular automated reasoning) for the verification and the debugging of concrete programs.
We report work in progress concerning the theoretical basis and the implementation in the Theorem... more We report work in progress concerning the theoretical basis and the implementation in the Theorema system of a methodology for the generation of verification conditions for recursive procedures, with the aim of practical verification of recursive programs. We develop a method for proving total correctness properties of programs which have simple functional recursive definitions, and we discuss its different aspects. Most of the verification conditions are expressed in first order logic and their proof does not need a theory of computation, but only the knowledge which is specific to the functions occuring in the program.
We report work in progress concerning the theoretical basis and the implementation in the Theorem... more We report work in progress concerning the theoretical basis and the implementation in the Theorema system of a methodology for the generation of verification conditions for recursive procedures, with the aim of practical verification of recursive programs. Proving total correctness is achieved by proving separately partial correctness and then termination. In contrast to other approaches, which use a special theory describing the behavior of programs, we use such a theory only "in the background", for developing a general rule for generating verification conditions, while the conditions themselves are presented (and provable) using the theories relevant to the program text only. This is very important for automatic proving, since it reduces significantly the effort of the provers. We present practical experiments in which several programs are completely verified using our verification condition generator and the provers of the Theorema system. Introduction. While proving [...
We report work concerning the theoretical basis and the imple-mentation in the Theorema system of... more We report work concerning the theoretical basis and the imple-mentation in the Theorema system of a methodology for the gen-eration of verification conditions for recursive procedures, with the aim of practical verification of recursive programs. We develop a method for proving total correctness properties of programs which have simple functional recursive definitions, and we discuss its dif-ferent aspects. We also define a class of programs for which the method is complete and we give a detailed proof of the complete-ness statement.
We present an environment for proving total correctness of mutual recursive functional programs. ... more We present an environment for proving total correctness of mutual recursive functional programs. As usual, correctness is transformed into a set of first-order predicate logic formulae—verification conditions. As a distinctive feature of our method, these formulae are not only sufficient, but also necessary for the correctness. A specialized strategy for proving termination is developed. The detailed termination proofs may in many cases be avoided due to their reusability.
We describe practical experiments of program verification in the frame of the Theorema system (ww... more We describe practical experiments of program verification in the frame of the Theorema system (www.theorema.org). This includes both functional programs (using fixpoint theory), as well as imperative programs (using Hoare logic). By comparing dierent approaches we are trying to find general schemes which are useful for practical work. The Theorema system oers facilities for working with higher-order predicate logic formulae (including various general and domain-oriented provers) and also for defining and testing algorithms both in functional and in imperative styles. We generate verification conditions as natural-style predicate logic formulae, which can be then proven by Theorema, by issuing natural-style proofs which are human-readable.
We present a method for verifying recursive functional pro-grams. We define a Verification Condit... more We present a method for verifying recursive functional pro-grams. We define a Verification Condition Generator (VCG) which covers the most frequent types of recursive programs. These programs may op-erate on arbitrary domains. Soundness and Completeness of the VCG are proven on the meta level, and this provides a warranty that any system based on our results will be sound.
We describe an innovative method for proving total correctness of tail recursive programs having ... more We describe an innovative method for proving total correctness of tail recursive programs having a specific structure, namely programs in which an auxiliary tail recursive function is driven by a main nonrecursive function, and only the specification of the main function is provided. The specification of the auxiliary function is obtained almost fully automatically by solving coupled linear recursive sequences with constant coefficients. The process is carried out by means of CA (Computer Algebra) and AC (Algorithmic Combinatorics) and is implemented in the Theorema system (using Mathematica). We demonstrate this method on an example involving polynomial expressions. Furthermore, we develop a method for synthesis of recursive programs for computing polynomial expressions of a fixed degree by means of "cheap" operations, e.g., additions, subtractions and multiplications. For a given polynomial expression, we define its recursive program in a schemewise manner. The correctness of the synthesized programs follows from the general correctness of the synthesis method, which is proven once for all, using the verification method presented in the first part of this paper.
2010 12th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing, 2010
We present an environment for proving correctness of mutually recursive functional programs. As u... more We present an environment for proving correctness of mutually recursive functional programs. As usual, correctness is transformed into a set of first-order predicate logic formulaeverification conditions. As a distinctive feature of our method, these formulae are not only sufficient, but also necessary for the correctness.
We present a verification environment for imperative pro- grams (using Hoare logic) and for funct... more We present a verification environment for imperative pro- grams (using Hoare logic) and for functional programs (using fixpoint theory) in the frame of the Theorema system (www.theorema.org). In particular, we discuss some methods for finding the invariants of loops and of specifications of auxiliary tail recursive functions. These meth- ods use algorithms from (polynomial) algebra and combinatorics, namely Groebner bases,
Second International Symposium on Leveraging Applications of Formal Methods, Verification and Validation (isola 2006), 2006
We study and implement concrete methods for the verification of both imperative as well as functi... more We study and implement concrete methods for the verification of both imperative as well as functional programs in the frame of the Theorema system. The distinctive features of our approach consist in the automatic generation of loop invariants (by using combinatorial and algebraic techniques), and the generation of verification conditions as first-order logical formulae which do not refer to a specific model of computation.
... ACM, 12, 1969. [4] Tudor Jebelean, Laura Kovacs, and Nikolaj Popov. Verification of imperativ... more ... ACM, 12, 1969. [4] Tudor Jebelean, Laura Kovacs, and Nikolaj Popov. Verification of imperative programs in theorema. In 1st South-East European Work-shop in Formal Methods (SEEFM03), 2003. Thessaloniki, Greece, 20 November 2003. [5] B. Buchberger; F. Lichtenberger. ...
We present a verification environment for imperative pro- grams (using Hoare logic) and for funct... more We present a verification environment for imperative pro- grams (using Hoare logic) and for functional programs (using fixpoint theory) in the frame of the Theorema system (www.theorema.org). In particular, we discuss some methods for finding the invariants of loops and of specifications of auxiliary tail recursive functions. These meth- ods use algorithms from (polynomial) algebra and combinatorics, namely Groebner bases,
We describe practical experiments of program verification in the frame of the Theorema system (ww... more We describe practical experiments of program verification in the frame of the Theorema system (www.theorema.org). This includes both functional programs (using fixpoint theory), as well as imperative programs (using Hoare logic). By comparing dierent approaches we are trying to find general schemes which are useful for practical work. The Theorema system oers facilities for working with higher-order predicate logic formulae
We report work in progress concerning the theoretical basis and the implementation in the Theorem... more We report work in progress concerning the theoretical basis and the implementation in the Theorema system of a methodology for the generation of verification conditions for recursive procedures, with the aim of practical verification of recursive programs. Proving total correctness is achieved by proving separately partial correctness and then termination. In contrast to other approaches, which use a special theory describing the behavior of programs, we use such a theory only "in the background", for developing a general rule for generating verification conditions, while the conditions themselves are presented (and provable) using the theories relevant to the program text only. This is very important for automatic proving, since it reduces significantly the effort of the provers. We present practical experiments in which several programs are completely verified using our verification condition generator and the provers of the Theorema system.
We present an experimental prototype environment for defining and verifying recursive functional ... more We present an experimental prototype environment for defining and verifying recursive functional programs, which is part of the Theorema system. A distinctive feature of our approach is the hint on "what is wrong" in case of a verification failure. The prototype is designed in order to improve the education of future software engineers by exposing them to successful examples of using formal methods (and in particular automated reasoning) for the verification and the debugging of concrete programs.
We report work in progress concerning the theoretical basis and the implementation in the Theorem... more We report work in progress concerning the theoretical basis and the implementation in the Theorema system of a methodology for the generation of verification conditions for recursive procedures, with the aim of practical verification of recursive programs. We develop a method for proving total correctness properties of programs which have simple functional recursive definitions, and we discuss its different aspects. Most of the verification conditions are expressed in first order logic and their proof does not need a theory of computation, but only the knowledge which is specific to the functions occuring in the program.
We report work in progress concerning the theoretical basis and the implementation in the Theorem... more We report work in progress concerning the theoretical basis and the implementation in the Theorema system of a methodology for the generation of verification conditions for recursive procedures, with the aim of practical verification of recursive programs. Proving total correctness is achieved by proving separately partial correctness and then termination. In contrast to other approaches, which use a special theory describing the behavior of programs, we use such a theory only "in the background", for developing a general rule for generating verification conditions, while the conditions themselves are presented (and provable) using the theories relevant to the program text only. This is very important for automatic proving, since it reduces significantly the effort of the provers. We present practical experiments in which several programs are completely verified using our verification condition generator and the provers of the Theorema system. Introduction. While proving [...
We report work concerning the theoretical basis and the imple-mentation in the Theorema system of... more We report work concerning the theoretical basis and the imple-mentation in the Theorema system of a methodology for the gen-eration of verification conditions for recursive procedures, with the aim of practical verification of recursive programs. We develop a method for proving total correctness properties of programs which have simple functional recursive definitions, and we discuss its dif-ferent aspects. We also define a class of programs for which the method is complete and we give a detailed proof of the complete-ness statement.
We present an environment for proving total correctness of mutual recursive functional programs. ... more We present an environment for proving total correctness of mutual recursive functional programs. As usual, correctness is transformed into a set of first-order predicate logic formulae—verification conditions. As a distinctive feature of our method, these formulae are not only sufficient, but also necessary for the correctness. A specialized strategy for proving termination is developed. The detailed termination proofs may in many cases be avoided due to their reusability.
We describe practical experiments of program verification in the frame of the Theorema system (ww... more We describe practical experiments of program verification in the frame of the Theorema system (www.theorema.org). This includes both functional programs (using fixpoint theory), as well as imperative programs (using Hoare logic). By comparing dierent approaches we are trying to find general schemes which are useful for practical work. The Theorema system oers facilities for working with higher-order predicate logic formulae (including various general and domain-oriented provers) and also for defining and testing algorithms both in functional and in imperative styles. We generate verification conditions as natural-style predicate logic formulae, which can be then proven by Theorema, by issuing natural-style proofs which are human-readable.
We present a method for verifying recursive functional pro-grams. We define a Verification Condit... more We present a method for verifying recursive functional pro-grams. We define a Verification Condition Generator (VCG) which covers the most frequent types of recursive programs. These programs may op-erate on arbitrary domains. Soundness and Completeness of the VCG are proven on the meta level, and this provides a warranty that any system based on our results will be sound.
We describe an innovative method for proving total correctness of tail recursive programs having ... more We describe an innovative method for proving total correctness of tail recursive programs having a specific structure, namely programs in which an auxiliary tail recursive function is driven by a main nonrecursive function, and only the specification of the main function is provided. The specification of the auxiliary function is obtained almost fully automatically by solving coupled linear recursive sequences with constant coefficients. The process is carried out by means of CA (Computer Algebra) and AC (Algorithmic Combinatorics) and is implemented in the Theorema system (using Mathematica). We demonstrate this method on an example involving polynomial expressions. Furthermore, we develop a method for synthesis of recursive programs for computing polynomial expressions of a fixed degree by means of "cheap" operations, e.g., additions, subtractions and multiplications. For a given polynomial expression, we define its recursive program in a schemewise manner. The correctness of the synthesized programs follows from the general correctness of the synthesis method, which is proven once for all, using the verification method presented in the first part of this paper.
2010 12th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing, 2010
We present an environment for proving correctness of mutually recursive functional programs. As u... more We present an environment for proving correctness of mutually recursive functional programs. As usual, correctness is transformed into a set of first-order predicate logic formulaeverification conditions. As a distinctive feature of our method, these formulae are not only sufficient, but also necessary for the correctness.
We present a verification environment for imperative pro- grams (using Hoare logic) and for funct... more We present a verification environment for imperative pro- grams (using Hoare logic) and for functional programs (using fixpoint theory) in the frame of the Theorema system (www.theorema.org). In particular, we discuss some methods for finding the invariants of loops and of specifications of auxiliary tail recursive functions. These meth- ods use algorithms from (polynomial) algebra and combinatorics, namely Groebner bases,
Second International Symposium on Leveraging Applications of Formal Methods, Verification and Validation (isola 2006), 2006
We study and implement concrete methods for the verification of both imperative as well as functi... more We study and implement concrete methods for the verification of both imperative as well as functional programs in the frame of the Theorema system. The distinctive features of our approach consist in the automatic generation of loop invariants (by using combinatorial and algebraic techniques), and the generation of verification conditions as first-order logical formulae which do not refer to a specific model of computation.
Uploads
Papers by Nikolaj Popov