Probability, be it inherent or explicitly introduced, has become an important issue in the verification of programs. In this paper we study a formalism which allows reasoning about programs which can act probabilistically. To describe probabilistic programs, a basic programming language with an operator for probabilistic choice is introduced and a denotational semantics is given for this language. To specify propertics of probabilistic programs, standard first order logic predicates are insufficient, so a notion of probabilistic predicates is introduced. A Hoare-style proof system to check properties of probabilistic programs is given. The proof system for a sublanguage is shown to be sound and complete; the properties that can be derived are exactly the valid properties. Finally some typical examples illustrate the use of the probabilistic predicates and the proof system.
[1]
Stephen A. Cook,et al.
Soundness and Completeness of an Axiom System for Program Verification
,
1978,
SIAM J. Comput..
[2]
Bernhard Steffen,et al.
Reactive, Generative and Stratified Models of Probabilistic Processes
,
1995,
Inf. Comput..
[3]
Dexter Kozen.
A Probabilistic PDL
,
1985,
J. Comput. Syst. Sci..
[4]
Kim G. Larsen,et al.
Bisimulation through Probabilistic Testing
,
1991,
Inf. Comput..
[5]
Annabelle McIver,et al.
Probabilistic predicate transformers
,
1996,
TOPL.
[6]
Amir Pnueli,et al.
Probabilistic Verification
,
1993,
Information and Computation.