scispace - formally typeset
Search or ask a question

Showing papers on "Hoare logic published in 2013"


Journal ArticleDOI
TL;DR: The central component of CertiPriv is a quantitative extension of probabilistic relational Hoare logic that enables one to derive differential privacy guarantees for programs from first principles, and provides the first machine-checked proofs of correctness of the Laplacian, Gaussian, and exponential mechanisms and of the privacy of randomized and streaming algorithms from the literature.
Abstract: Differential privacy is a notion of confidentiality that allows useful computations on sensible data while protecting the privacy of individuals. Proving differential privacy is a difficult and error-prone task that calls for principled approaches and tool support. Approaches based on linear types and static analysis have recently emerged; however, an increasing number of programs achieve privacy using techniques that fall out of their scope. Examples include programs that aim for weaker, approximate differential privacy guarantees and programs that achieve differential privacy without using any standard mechanisms. Providing support for reasoning about the privacy of such programs has been an open problem.We report on CertiPriv, a machine-checked framework for reasoning about differential privacy built on top of the Coq proof assistant. The central component of CertiPriv is a quantitative extension of probabilistic relational Hoare logic that enables one to derive differential privacy guarantees for programs from first principles. We demonstrate the applicability of CertiPriv on a number of examples whose formal analysis is out of the reach of previous techniques. In particular, we provide the first machine-checked proofs of correctness of the Laplacian, Gaussian, and exponential mechanisms and of the privacy of randomized and streaming algorithms from the literature.

156 citations


Proceedings ArticleDOI
25 Sep 2013
TL;DR: The design and implementation of an extensible programming language and its intrinsic support for formal verification, based on a cross-platform core combining characteristics of assembly languages and compiler intermediate languages, and an expressive notion of certified low-level macros are introduced.
Abstract: We report on the design and implementation of an extensible programming language and its intrinsic support for formal verification. Our language is targeted at low-level programming of infrastructure like operating systems and runtime systems. It is based on a cross-platform core combining characteristics of assembly languages and compiler intermediate languages. From this foundation, we take literally the saying that C is a "macro assembly language": we introduce an expressive notion of certified low-level macros, sufficient to build up the usual features of C and beyond as macros with no special support in the core. Furthermore, our macros have integrated support for strongest postcondition calculation and verification condition generation, so that we can provide a high-productivity formal verification environment within Coq for programs composed from any combination of macros. Our macro interface is expressive enough to support features that low-level programs usually only access through external tools with no formal guarantees, such as declarative parsing or SQL-inspired querying. The abstraction level of these macros only imposes a compile-time cost, via the execution of functional Coq programs that compute programs in our intermediate language; but the run-time cost is not substantially greater than for more conventional C code. We describe our experiences constructing a full C-like language stack using macros, with some experiments on the verifiability and performance of individual programs running on that stack.

102 citations


Book ChapterDOI
20 Jun 2013
TL;DR: It is shown that invariants in program verification can be regarded as geometric concepts in machine learning, and the learning algorithm is extended to obtain a sound procedure that can generate proofs containing invariants that are arbitrary boolean combinations of polynomial inequalities.
Abstract: We formalize the problem of program verification as a learning problem, showing that invariants in program verification can be regarded as geometric concepts in machine learning. Safety properties define bad states: states a program should not reach. Program verification explains why a program’s set of reachable states is disjoint from the set of bad states. In Hoare Logic, these explanations are predicates that form inductive assertions. Using samples for reachable and bad states and by applying well known machine learning algorithms for classification, we are able to generate inductive assertions. By relaxing the search for an exact proof to classifiers, we obtain complexity theoretic improvements. Further, we extend the learning algorithm to obtain a sound procedure that can generate proofs containing invariants that are arbitrary boolean combinations of polynomial inequalities. We have evaluated our approach on a number of challenging benchmarks and the results are promising.

97 citations


Book ChapterDOI
06 Jan 2013
TL;DR: Relational Hoare Logic is a generalization of Hoare logic that allows reasoning about executions of two programs, or two executions of the same program, and can be used to verify that a program is robust or (information flow) secure, and that two programs are observationally equivalent.
Abstract: Relational Hoare Logic is a generalization of Hoare logic that allows reasoning about executions of two programs, or two executions of the same program. It can be used to verify that a program is robust or (information flow) secure, and that two programs are observationally equivalent. Product programs provide a means to reduce verification of relational judgments to the verification of a (standard) Hoare judgment, and open the possibility of applying standard verification tools to relational properties. However, previous notions of product programs are defined for deterministic and structured programs. Moreover, these notions are symmetric, and cannot be applied to properties such as refinement, which are asymmetric and involve universal quantification on the traces of the first program and existential quantification on the traces of the second program.

76 citations


Proceedings ArticleDOI
25 Jun 2013
TL;DR: (one-path) reachability logic, a language-independent proof system for program verification, which takes an operational semantics as axioms and derives reachability rules, which generalize Hoare triples, is introduced.
Abstract: This paper introduces *(one-path) reach ability logic*, a language-independent proof system for program verification, which takes an operational semantics as axioms and derives *reach ability rules*, which generalize Hoare triples. This system improves on previous work by allowing operational semantics given with *conditional* rewrite rules, which are known to support all major styles of operational semantics. In particular, Kahn's big-step and Plot kin's small-step semantic styles are now supported. The reach ability logic proof system is shown sound (i.e., partially correct) and (relatively) complete. Reach ability logic thus eliminates the need to independently define an axiomatic and an operational semantics for each language, and the non-negligible effort to prove the former sound and complete w.r.t. the latter. The soundness result has also been formalized in Coq, allowing reach ability logic derivations to serve as formal proof certificates that rely only on the operational semantics.

63 citations


Proceedings ArticleDOI
23 Jan 2013
TL;DR: An automated approach to relatively completely verifying safety (i.e., reachability) property of higher-order functional programs is presented and an automated type inference method for the type system is developed, thereby realizing an automated relatively complete verification ofHigher-order programs.
Abstract: We present an automated approach to relatively completely verifying safety (i.e., reachability) property of higher-order functional programs. Our contribution is two-fold. First, we extend the refinement type system framework employed in the recent work on (incomplete) automated higher-order verification by drawing on the classical work on relatively complete "Hoare logic like" program logic for higher-order procedural languages. Then, by adopting the recently proposed techniques for solving constraints over quantified first-order logic formulas, we develop an automated type inference method for the type system, thereby realizing an automated relatively complete verification of higher-order programs.

54 citations


Proceedings ArticleDOI
29 Sep 2013
TL;DR: This paper shows how to encode Simulink diagrams into Hybrid CSP (HCSP), a formal modelling language encoding hybrid system dynamics by means of an extension of CSP, and utilizes a Hybrid Hoare Logic Prover to verify the translated HCSP models.
Abstract: Simulink is an industrial de-facto standard for building executable models of embedded systems and their environments, facilitating validation by simulation. Due to the inherent incompleteness of this form of system validation, complementing simulation by formal verification would be desirable. A prerequisite for such an approach is a formal semantics of Simulink's graphical models. In this paper, we show how to encode Simulink diagrams into Hybrid CSP (HCSP), a formal modelling language encoding hybrid system dynamics by means of an extension of CSP. The translation from Simulink to HCSP is fully automatic. We furthermore discuss how to utilize a Hybrid Hoare Logic Prover to verify the translated HCSP models. We demonstrate our approach on a combined scenario originating from the Chinese High-speed Train Control System at Level 3 (CTCS-3).

51 citations


Book ChapterDOI
17 May 2013
TL;DR: A theorem prover of HHL in Isabelle/HOL is implemented, with which the process including modelling and verification of annotated HCSP models can be mechanized, and a machine-checked proof is provided for the combined scenario, with the result indicating a design error in SRS of CTCS-3.
Abstract: In this paper, we investigate how to formalize and verify the System Requirements Specification SRS of Chinese Train Control System Level 3 CTCS-3, which includes a set of basic operational scenarios that cooperate with each other to achieve the desired behavior of trains. It is absolutely necessary to prove that the cooperation of basic scenarios indeed completes the required behavior. As a case study, a combined scenario with several basic scenarios integrated is studied in this paper. We model each scenario as a Hybrid CSP HCSP process, and specify its properties using Hybrid Hoare Logic HHL. Given such an annotated HCSP model, the deductive verification of conformance of the model to the properties is then carried out. For the purpose, we implement a theorem prover of HHL in Isabelle/HOL, with which the process including modelling and verification of annotated HCSP models can be mechanized. In particular, we provide a machine-checked proof for the combined scenario, with the result indicating a design error in SRS of CTCS-3.

46 citations


Book ChapterDOI
26 Aug 2013
TL;DR: This chapter introduces the systematic approach to formal modelling, analysis and verification of hybrid systems, and considers how to synthesize a switching logic for a considered hybrid system by reduction to constraint solving, to meet a given safety, liveness, optimality requirement, or any of their combinations.
Abstract: Hybrid systems is a mathematical model of embedded systems, and has been widely used in the design of complex embedded systems. In this chapter, we will introduce our systematic approach to formal modelling, analysis and verification of hybrid systems. In our framework, a hybrid system is modelled using Hybird CSP HCSP, and specified and reasoned about by Hybrid Hoare Logic HHL, which is an extension of Hoare logic to hybrid systems. For deductive verification of hybrid systems, a complete approach to generating polynomial invariants for polynomial hybrid systems is proposed; meanwhile, a theorem prover for HHL that can provide tool support for the verification has been implemented. We give some case studies from real world, for instance, Chinese High-Speed Train Control System at Level 3 CTCS-3. In addition, based on our invariant generation approach, we consider how to synthesize a switching logic for a considered hybrid system by reduction to constraint solving, to meet a given safety, liveness, optimality requirement, or any of their combinations. We also discuss other issues of hybrid systems, e.g., stability analysis.

35 citations


Book ChapterDOI
19 Jun 2013
TL;DR: Traditional (classical) Floyd-Hoare logic is defined for a case of total pre- and postconditions while programs can be partial while this logic has rather complicated soundness constraints for inference rules, therefore simpler sufficient constraints are proposed.
Abstract: Traditional (classical) Floyd-Hoare logic is defined for a case of total pre- and postconditions while programs can be partial. In the chapter we propose to extend this logic for partial conditions. To do this we first construct and investigate special program algebras of partial predicates, functions, and programs. In such algebras program correctness assertions are presented with the help of a special composition called Floyd-Hoare composition. This composition is monotone and continuous. Considering the class of constructed algebras as a semantic base we then define an extended logic – Partial Floyd-Hoare Logic – and investigate its properties. This logic has rather complicated soundness constraints for inference rules, therefore simpler sufficient constraints are proposed. The logic constructed can be used for program verification.

34 citations


Journal ArticleDOI
TL;DR: New proof rules and termination functions are added that allow for proofs to additionally guarantee that program executions always terminate (weak total correctness), or that programs always terminate and do so without failure (total correctness).
Abstract: GP 2 is an experimental nondeterministic programming language based on graph transformation rules, allowing for visual programming and the solving of graph problems at a high-level of abstraction. In previous work we demonstrated how to verify graph programs using a Hoare-style proof calculus, but only partial correctness was considered. In this paper, we add new proof rules and termination functions, which allow for proofs to additionally guarantee that program executions always terminate (weak total correctness), or that programs always terminate and do so without failure (total correctness). We show that the new proof rules are sound with respect to the operational semantics of GP 2, complete for termination, and demonstrate their use on some example programs.

Posted Content
TL;DR: A Coq library about Kleene algebra with tests is presented, including a proof of their completeness over the appropriate notion of languages, a decision procedure for their equational theory, and tools for exploiting hypotheses of a certain kind in such a theory.
Abstract: We present a Coq library about Kleene algebra with tests, including a proof of their completeness over the appropriate notion of languages, a decision procedure for their equational theory, and tools for exploiting hypotheses of a particular shape in such a theory. Kleene algebra with tests make it possible to represent if-then-else statements and while loops in most imperative programming languages. They were actually introduced by Kozen as an alternative to propositional Hoare logic. We show how to exploit the corresponding Coq tools in the context of program verification by proving equivalences of while programs, correctness of some standard compiler optimisations, Hoare rules for partial correctness, and a particularly challenging equivalence of flowchart schemes.

Book ChapterDOI
16 Sep 2013
TL;DR: A constraint language for finite partial maps a.k.a. heaps that incorporates the notion of separation from Separation Logic is introduced, using $\mathcal H$ to build an extension of Hoare Logic for reasoning over heap manipulating programs using constraint-based symbolic execution.
Abstract: This paper introduces a constraint language $\mathcal H$ for finite partial maps a.k.a. heaps that incorporates the notion of separation from Separation Logic. We use $\mathcal H$ to build an extension of Hoare Logic for reasoning over heap manipulating programs using constraint-based symbolic execution. We present a sound and complete algorithm for solving quantifier-free QF $\mathcal H$ -formulae based on heap element propagation. An implementation of the $\mathcal H$ -solver has been integrated into a Satisfiability Modulo Theories SMT framework. We experimentally evaluate the implementation against Verification Conditions VCs generated from symbolic execution of large heap manipulating programs. In particular, we mitigate the path explosion problem using subsumption via interpolation --- made possible by the constraint-based encoding.

Proceedings ArticleDOI
25 Jun 2013
TL;DR: This work lays out a definition of order-enriched monad which imposes cpo structure on the monad itself rather than on base category, and develops a generic Hoare calculus for monadic side-effecting programs.
Abstract: Monads are the basis of a well-established method of encapsulating side-effects in semantics and programming. There have been a number of proposals for monadic program logics in the setting of plain monads, while much of the recent work on monadic semantics is concerned with monads on enriched categories, in particular in domain-theoretic settings, which allow for recursive monadic programs. Here, we lay out a definition of order-enriched monad which imposes cpo structure on the monad itself rather than on base category. Starting from the observation that order-enrichment of a monad induces a weak truth-value object, we develop a generic Hoare calculus for monadic side-effecting programs. For this calculus, we prove relative completeness via a calculus of weakest preconditions, which we also relate to strongest post conditions.

Book ChapterDOI
22 Jul 2013
TL;DR: In this paper, a Coq library about Kleene algebra with tests is presented, including a proof of their completeness over the appropriate notion of languages, a decision procedure for their equational theory, and tools for exploiting hypotheses of a certain kind in such a theory.
Abstract: We present a Coq library about Kleene algebra with tests, including a proof of their completeness over the appropriate notion of languages, a decision procedure for their equational theory, and tools for exploiting hypotheses of a certain kind in such a theory Kleene algebra with tests make it possible to represent if-then-else statements and while loops in imperative programming languages They were actually introduced as an alternative to propositional Hoare logic We show how to exploit the corresponding Coq tools in the context of program verification by proving equivalences of while programs, correctness of some standard compiler optimisations, Hoare rules for partial correctness, and a particularly challenging equivalence of flowchart schemes

Book ChapterDOI
16 Mar 2013
TL;DR: A small step operational semantics and an axiomatic semantics for a small C-like language that combines these two features, and which also supports pointers to block scope variables is defined.
Abstract: We present an approach for handling non-local control flow (goto and return statements) in the presence of allocation and deallocation of block scope variables in imperative programming languages. We define a small step operational semantics and an axiomatic semantics (in the form of a separation logic) for a small C-like language that combines these two features, and which also supports pointers to block scope variables. Our operational semantics represents the program state through a generalization of Huet's zipper data structure. We prove soundness of our axiomatic semantics with respect to our operational semantics. This proof has been fully formalized in Coq.

Posted Content
TL;DR: This work develops a modular proof theory for various propositional abstract separation logics using cut-free labelled sequent calculi and presents a theorem prover based on the labelled calculus for these logics.
Abstract: Separation logics are a family of extensions of Hoare logic for reasoning about programs that mutate memory. These logics are "abstract" because they are independent of any particular concrete memory model. Their assertion languages, called propositional abstract separation logics, extend the logic of (Boolean) Bunched Implications (BBI) in various ways. We develop a modular proof theory for various propositional abstract separation logics using cut-free labelled sequent calculi. We first extend the cut-fee labelled sequent calculus for BBI of Hou et al to handle Calcagno et al's original logic of separation algebras by adding sound rules for partial-determinism and cancellativity, while preserving cut-elimination. We prove the completeness of our calculus via a sound intermediate calculus that enables us to construct counter-models from the failure to find a proof. We then capture other propositional abstract separation logics by adding sound rules for indivisible unit and disjointness, while maintaining completeness. We present a theorem prover based on our labelled calculus for these propositional abstract separation logics.

Journal ArticleDOI
TL;DR: This work introduces a formalization of data structures for signed multi-precision arithmetic in low-level programs and uses this formalization to verify the implementation of several primitive arithmetic functions using Separation logic, an extension of Hoare logic to deal with pointers, and a concrete implementation of the binary extended gcd algorithm.
Abstract: Arithmetic functions are used in many important computer programs such as computer algebra systems and cryptographic software. The latter are critical applications whose correct implementation deserves to be formally guaranteed. They are also computation-intensive applications, so that programmers often resort to low-level assembly code to implement arithmetic functions. We propose an approach for the construction of a library of formally verified low-level arithmetic functions. To build our library, we first introduce a formalization of data structures for signed multi-precision arithmetic in low-level programs. We use this formalization to verify the implementation of several primitive arithmetic functions using Separation logic, an extension of Hoare logic to deal with pointers. Since this direct style of formal verification leads to technically involved specifications, we also propose for larger functions to show a formal simulation relation between pseudo-code and assembly. This style of verification is illustrated with a concrete implementation of the binary extended gcd algorithm.

Book ChapterDOI
01 Jul 2013
TL;DR: It is shown that development of such formalisations requires addressing several subtle issues, such as the possibility of infinitely-recursive definitions and the need for the isorecursive semantics to correctly reflect the restrictions that make it readily implementable, in the context of Chalice, a verification methodology based on implicit dynamic frames.
Abstract: Methodologies for static program verification and analysis often support recursive predicates in specifications, in order to reason about recursive data structures. Intuitively, a predicate instance represents the complete unrolling of its definition; this is the equirecursive interpretation. However, this semantics is unsuitable for static verification, when the recursion becomes unbounded. For this reason, most static verifiers differentiate between, e.g., a predicate instance and its corresponding body, while providing a facility to map between the two; this is the isorecursive semantics. While this latter interpretation is usually implemented in practice, only the equirecursive semantics is typically treated in theoretical work. In this paper, we provide both an isorecursive and an equirecursive formal semantics for recursive definitions in the context of Chalice, a verification methodology based on implicit dynamic frames. We show that development of such formalisations requires addressing several subtle issues, such as the possibility of infinitely-recursive definitions and the need for the isorecursive semantics to correctly reflect the restrictions that make it readily implementable. These questions are made more challenging still in the context of implicit dynamic frames, where the use of heap-dependent expressions provides further pitfalls for a correct formal treatment.

Book ChapterDOI
22 Jul 2013
TL;DR: This work formalises SKAT in Isabelle/HOL, using the quotient type package to reason equationally in this algebra and extends SKAT with assertion statements and derive the inference rules of Hoare logic.
Abstract: Schematic Kleene algebra with tests (SKAT) supports the equational verification of flowchart scheme equivalence and captures simple while-programs with assignment statements. We formalise SKAT in Isabelle/HOL, using the quotient type package to reason equationally in this algebra. We apply this formalisation to a complex flowchart transformation proof from the literature. We extend SKAT with assertion statements and derive the inference rules of Hoare logic. We apply this extension in simple program verification examples and the derivation of additional Hoare-style rules. This shows that algebra can provide an abstract semantic layer from which different program analysis and verification tasks can be implemented in a simple lightweight way.

Book ChapterDOI
29 Aug 2013
TL;DR: Energy inefficient software implementations may cause battery drain for small systems and high energy costs for large systems and dynamic energy analysis is often applied to mitigate these issues.
Abstract: Energy inefficient software implementations may cause battery drain for small systems and high energy costs for large systems. Dynamic energy analysis is often applied to mitigate these issues. However, this is often hardware-specific and requires repetitive measurements using special equipment.

Book ChapterDOI
09 Dec 2013
TL;DR: This paper adapt Hoare Logic to the SIMT setting, by adding an extra component representing the set of enabled threads to the usual Hoare triples, by identifying an appropriate class of programs for which soundness and relative completeness hold.
Abstract: We study a Hoare Logic to reason about GPU kernels, which are parallel programs executed on GPUs. We consider the SIMT (Single Instruction Multiple Threads) execution model, in which multiple threads execute in lockstep (that is, execute the same instruction at a time). When control branches both branches are executed sequentially but during the execution of each branch only those threads that take it are enabled; after the control converges, all threads are enabled and execute in lockstep again. In this paper we adapt Hoare Logic to the SIMT setting, by adding an extra component representing the set of enabled threads to the usual Hoare triples. It turns out that soundness and relative completeness do not hold for all programs; a difficulty arises from the fact that one thread can invalidate the loop termination condition of another thread through shared memory. We overcome this difficulty by identifying an appropriate class of programs for which soundness and relative completeness hold.

16 Jan 2013
TL;DR: In this paper, the authors present a labeling method to insert cost annotations in a higher-order functional program, and certify their correctness with respect to a standard compilation chain to assembly code including safe memory management.
Abstract: We present a so-called labelling method to insert cost annotations in a higher-order functional program, to certify their correctness with respect to a standard compilation chain to assembly code including safe memory management, and to reason on them in a higher-order Hoare logic.

Journal ArticleDOI
TL;DR: The notion of additive relation borrowed from homological algebra is used to give a convenient framework in which all diagrams have a semantic value and a sound system of Hoare-style rules for block diagram constructors is given.
Abstract: We consider reasoning about linear systems expressed as block diagrams that give a graphical representation of a system of differential equations or recurrence equations. We use the notion of additive relation borrowed from homological algebra to give a convenient framework in which all diagrams have a semantic value. We give a sound system of Hoare-style rules for the block diagram constructors that singles out a tractable subset of the block diagram language in which all diagrams represent total functions. We show these rules in action on some simple examples from a variety of applications domains.

Proceedings ArticleDOI
25 Sep 2013
TL;DR: A Hoare-style logic for the verification of programs with higher-order control, in the presence of dynamic state is developed by designing a dependent type theory with first class callcc and abort operators, where pre- and postconditions of programs are tracked through types.
Abstract: Continuations are programming abstractions that allow for manipulating the "future" of a computation. Amongst their many applications, they enable implementing unstructured program flow through higher-order control operators such as callcc. In this paper we develop a Hoare-style logic for the verification of programs with higher-order control, in the presence of dynamic state. This is done by designing a dependent type theory with first class callcc and abort operators, where pre- and postconditions of programs are tracked through types. Our operators are algebraic in the sense of Plotkin and Power, and Jaskelioff, to reduce the annotation burden and enable verification by symbolic evaluation. We illustrate working with the logic by verifying a number of characteristic examples.

Journal ArticleDOI
01 Dec 2013
TL;DR: Compositionnominative approach is used to define extension of Floyd-Hoare logic on partial preand postconditions and properties of extensional and intensional completeness of such inference systems are studied.
Abstract: The main object of research in this paper is extension of Floyd-Hoare logic on partial preand postconditions. Compositionnominative approach is used to define this extension. According to this approach semantics of extended logic is represented by algebras of partial quasiary mappings. Operations of these algebras are called compositions. Semantics of Floyd-Hoare triples (assertions) is formalized with the help of a special monotone composition. Preimage predicate transformer composition – a counterpart of the weakest precondition – is also defined. Sound modifications of inference systems with added constraints are presented. Properties of extensional and intensional completeness of such inference systems are studied.

Posted Content
TL;DR: It is proved that this logic is (relatively) complete by exploiting the power of weakest preconditions and weakest liberal precondition for quantum programs.
Abstract: Hoare logic is a foundation of axiomatic semantics of classical programs and it provides effective proof techniques for reasoning about correctness of classical programs. To offer similar techniques for quantum program verification and to build a logical foundation of programming methodology for quantum computers, we develop a full-fledged Hoare logic for both partial and total correctness of quantum programs. It is proved that this logic is (relatively) complete by exploiting the power of weakest preconditions and weakest liberal preconditions for quantum programs.

Book ChapterDOI
29 Oct 2013
TL;DR: A new method is put forward that makes good use of Hoare logic and inspection to improve the effectiveness of specification-based testing in detecting errors.
Abstract: Specification-based testing is limited in detecting program errors; correctness proof based on Hoare logic is difficult to perform in practice; and inspection is heavily dependent on human decisions. Each of these three is difficult to do a satisfactory job alone, but they complement each other when they come together in an appropriate manner. This paper puts forward a new method that makes good use of Hoare logic and inspection to improve the effectiveness of specification-based testing in detecting errors. The underlying principle of the method is first to use specification-based testing to discover traversed program paths and then to use Hoare logic to prove their correctness, but when proof is impossible to conduct, a special inspection is applied. During the proof or inspection process, all faults on the paths are expected to be detected. A case study is conducted to show its feasibility; an example taken from the case study is used to illustrate how the proposed method is applied; and a discussion on the important issues to be addressed in the future is presented.

Book ChapterDOI
04 Sep 2013
TL;DR: An extension to Hoare Logic for pointer program verification is presented that the value of an expression e depends only on the contents stored in a finite set of memory units and local reasoning can be supported using assertion variables which represent arbitrary assertions.
Abstract: This paper presents an extension to Hoare Logic for pointer program verification. The main observation leading to this logic is that the value of an expression e depends only on the contents stored in a finite set of memory units. This set can be specified using another expression (called the memory scope of e) constructed syntactically from e. A set of construction rules are given in this paper for expressions which may contain recursive functions (predicates). It is also observed that the memory scope of e is a super set of the memory scope of the memory scope of e. Based on this, local reasoning can be supported using assertion variables which represent arbitrary assertions. Program-point-specific expressions are used to specify the relations between different program points. Another feature of this logic is that for formulas with no user-defined functions, the weakest-preconditions can be calculated w.r.t. assignments.

Book ChapterDOI
30 Sep 2013
TL;DR: The article is devoted to the methods of proving parallel programs correctness, that are based on the Hoare axiomatic system, being developed for proving the correctness of the programs in the functional data-flow parallel programming language Pifagor.
Abstract: The article is devoted to the methods of proving parallel programs correctness, that are based on the Hoare axiomatic system. In this article such system is being developed for proving the correctness of the programs in the functional data-flow parallel programming language Pifagor. Recursion correctness is proved by induction. This method could be used as a base of a toolkit to support program correctness proving, since it could be made automate at many stages.