## A Symbolic Simulation Approach to Assertional Program Verification (2005)

Citations: | 4 - 2 self |

### BibTeX

@TECHREPORT{Matthews05asymbolic,

author = {John Matthews and J Strother Moore and Sandip Ray and Daron Vroon},

title = {A Symbolic Simulation Approach to Assertional Program Verification},

institution = {},

year = {2005}

}

### OpenURL

### Abstract

3 1

### Citations

1361 | An axiomatic basis for computer programming
- Hoare
- 1969
(Show Context)
Citation Context ...) pre implies assert at the initial states, and (iii) assert implies post at exit, then the first exit state reached by an execution from a pre state must satisfy post. In classic assertional methods =-=[11, 12]-=-, the guarantee above is formalized by a logic of programs, where the meaning of an instruction is specified by an axiom schema over predicates on S. In an operational model, it is possible, though no... |

718 |
Isabelle/HOL — A Proof Assistant for HigherOrder Logic
- Nipkow, Paulson, et al.
- 2002
(Show Context)
Citation Context ...operational semantics [5–7]. In particular, our approach provides a uniform methodology for proving both partial and total correctness. Our method has been implemented in the ACL2 [8, 9] and Isabelle =-=[4]-=- theorem provers, and has been applied in ACL2 to verify programs on existing operational machine models. However, the paper itself assumes no familiarity with these systems. The proof scripts are ava... |

563 |
Assigning meanings to programs
- Floyd
- 1967
(Show Context)
Citation Context ...tack decreases. 5 Related Work Operational semantics were introduced by McCarthy [15]. The notion of assertions was used by Goldstein and von Neumann [16], and Turing [17], and made explicit by Floyd =-=[18]-=-, Hoare [11], and Dijkstra [12]. Hoare and Dijkstra introduced program logics to provide a formal basis for the assertional method. King [19] wrote the first mechanized VCG. In mechanical theorem prov... |

262 |
Computer-Aided Reasoning: An Approach
- Kaufmann, Manolios, et al.
- 2000
(Show Context)
Citation Context ...onal reasoning with operational semantics [5–7]. In particular, our approach provides a uniform methodology for proving both partial and total correctness. Our method has been implemented in the ACL2 =-=[8, 9]-=- and Isabelle [4] theorem provers, and has been applied in ACL2 to verify programs on existing operational machine models. However, the paper itself assumes no familiarity with these systems. The proo... |

158 | Towards a Mathematical Science of Computation
- McCarthy
- 1962
(Show Context)
Citation Context ...ons of fact, the argument of the recursive calls decreases, while along the successive returns, the depth of the call stack decreases. 5 Related Work Operational semantics were introduced by McCarthy =-=[15]-=-. The notion of assertions was used by Goldstein and von Neumann [16], and Turing [17], and made explicit by Floyd [18], Hoare [11], and Dijkstra [12]. Hoare and Dijkstra introduced program logics to ... |

78 | Automated proofs of object code for a widely used microprocessor
- Boyer, Yu
- 1996
(Show Context)
Citation Context ...maintained on the stack. Each loop iteration puts the sum ofsProgram Counter Assertions *start* (tos(s) = k) ∧ (0 ≤ k) ∧ fib-loaded(s) *loop* (mem[20] = fix(fib(k − tos(s)))) ∧ (0 ≤ tos(s) ≤ k) ∧ (mem=-=[21]-=- = fix(fib(k − tos(s) − 1))) ∧ fib-loaded(s) *done* (mem[20] = fix(fib(k))) ∧ (tos(s) = 0) ∧ fib-loaded(s) *halt* (tos(s) = fix(fib(k))) Fig. 2. Assertions for the Fibonacci Program on TINY these numb... |

62 |
A program verifier
- King
- 1971
(Show Context)
Citation Context ... Neumann [16], and Turing [17], and made explicit by Floyd [18], Hoare [11], and Dijkstra [12]. Hoare and Dijkstra introduced program logics to provide a formal basis for the assertional method. King =-=[19]-=- wrote the first mechanized VCG. In mechanical theorem proving, operational semantics has been used extensively for program verification. Operational semantics has been particularly successful in ACL2... |

61 | C formalised in HOL
- Norrish
- 1998
(Show Context)
Citation Context ...d the JVM [22], and in PVS to model graphical state chart languages [23]. Assertional methods have been applied, using a verified VCG, to reason about pointers in Isabelle [24], and C programs in HOL =-=[25]-=-. Our work is influenced by two related previous efforts by the individual authors, namely Moore [5] for verifying partial correctness, and Matthews and Vroon [7] for showing termination. Indeed, a ke... |

41 | A denotational semantics for Stateflow
- Hamon
- 2005
(Show Context)
Citation Context ...ams in several large machine models [2, 20, 21]. Operational models have also been used in Isabelle/HOL for formalization of Java and the JVM [22], and in PVS to model graphical state chart languages =-=[23]-=-. Assertional methods have been applied, using a verified VCG, to reason about pointers in Isabelle [24], and C programs in HOL [25]. Our work is influenced by two related previous efforts by the indi... |

31 | Partial functions in ACL2
- Manolios, Moore
(Show Context)
Citation Context ...ine steps necessary to reach the next subsequent cutpoint, if such a cutpoint exists. The function is specified by a tail-recursive definition, and hence is uniformly definable in logics such as ACL2 =-=[3]-=- and Isabelle/HOL [4, § 9.2.3] that are expressive enough to admit arbitrary tail-recursive equations. We use this function to prove certain symbolic simulation rules which are then used to derive ver... |

28 | Mechanized formal reasoning about programs and computing machines
- Boyer, Moore
- 1996
(Show Context)
Citation Context ...n of operational models is tedious and complicated. It requires defining either an inductive invariant along with possibly a well-founded ranking function for every machine state, or a clock function =-=[2]-=- that characterizes, for each state, the number of machine transitions before termination. For realistic programs, the manual effort involved in the process is substantial. Research in program verific... |

28 | Formal Verification of a Java Compiler in Isabelle
- Strecker
- 2002
(Show Context)
Citation Context ...edecessor,sNqthm, which have been used for verifying programs in several large machine models [2, 20, 21]. Operational models have also been used in Isabelle/HOL for formalization of Java and the JVM =-=[22]-=-, and in PVS to model graphical state chart languages [23]. Assertional methods have been applied, using a verified VCG, to reason about pointers in Isabelle [24], and C programs in HOL [25]. Our work... |

26 | High-speed, analyzable simulators
- Greve, Wilding, et al.
- 2000
(Show Context)
Citation Context ...ide clarity and concreteness to the modeled program; for example, it is possible in executable logics to run simulations to corroborate the model with the program as it is executed on actual machines =-=[1]-=-. However, traditional mechanical verification of operational models is tedious and complicated. It requires defining either an inductive invariant along with possibly a well-founded ranking function ... |

26 | Inductive assertions and operational semantics
- Moore
- 2003
(Show Context)
Citation Context ...en applied, using a verified VCG, to reason about pointers in Isabelle [24], and C programs in HOL [25]. Our work is influenced by two related previous efforts by the individual authors, namely Moore =-=[5]-=- for verifying partial correctness, and Matthews and Vroon [7] for showing termination. Indeed, a key motivation of our work has been to extend these two methods to uniformly handle both partial and t... |

20 |
Checking a large routine. Report on a Conference on High Speed Automatic Calculating Machines
- Turing
- 1949
(Show Context)
Citation Context ... returns, the depth of the call stack decreases. 5 Related Work Operational semantics were introduced by McCarthy [15]. The notion of assertions was used by Goldstein and von Neumann [16], and Turing =-=[17]-=-, and made explicit by Floyd [18], Hoare [11], and Dijkstra [12]. Hoare and Dijkstra introduced program logics to provide a formal basis for the assertional method. King [19] wrote the first mechanize... |

19 |
Cuarded commands, nondeterminacy and a calculus for the derivation of programs
- Dijkstra
- 1975
(Show Context)
Citation Context ...) pre implies assert at the initial states, and (iii) assert implies post at exit, then the first exit state reached by an execution from a pre state must satisfy post. In classic assertional methods =-=[11, 12]-=-, the guarantee above is formalized by a logic of programs, where the meaning of an instruction is specified by an axiom schema over predicates on S. In an operational model, it is possible, though no... |

19 | Proving theorems about Java and the JVM with ACL2
- Moore
- 2003
(Show Context)
Citation Context ...r the Factorial Method 4.2 A Recursive Program: Factorial on the JVM We now apply our method to verify JVM bytecodes for the Java factorial method fact shown in Fig. 3. The machine model we use is M5 =-=[14]-=-, which has been developed at the University of Texas to formally reason about JVM bytecodes. M5 provides operational semantics for a significant fragment of the JVM in ACL2. It specifies 138 bytecode... |

11 | Algorithms for Ordinal Arithmetic
- Manolios, Vroon
- 2003
(Show Context)
Citation Context ...ion that maps cutpoints to natural numbers; ordinals are used merely for succinctness and because of the extensive support provided for ordinal operations in ACL2 in the context of termination proofs =-=[13]-=-. Function m is defined as: m(s) � � 0 if exit(s) (ω ·o tos(s)) +o |∗halt∗ − pc(s)| otherwise where ω is the first infinite ordinal, and ·o and +o are ordinal multiplication and addition operators. In... |

7 |
Piton: A Mechanically Verified Assembly Language
- Moore
- 1996
(Show Context)
Citation Context ...memory addresses 20 and 21, and the loop counter n is maintained on the stack. Each loop iteration puts the sum ofsProgram Counter Assertions *start* (tos(s) = k) ∧ (0 ≤ k) ∧ fib-loaded(s) *loop* (mem=-=[20]-=- = fix(fib(k − tos(s)))) ∧ (0 ≤ tos(s) ≤ k) ∧ (mem[21] = fix(fib(k − tos(s) − 1))) ∧ fib-loaded(s) *done* (mem[20] = fix(fib(k))) ∧ (tos(s) = 0) ∧ fib-loaded(s) *halt* (tos(s) = fix(fib(k))) Fig. 2. A... |

4 | D.: Partial Clock Functions in ACL2
- Matthews, Vroon
- 2004
(Show Context)
Citation Context ...Isabelle [24], and C programs in HOL [25]. Our work is influenced by two related previous efforts by the individual authors, namely Moore [5] for verifying partial correctness, and Matthews and Vroon =-=[7]-=- for showing termination. Indeed, a key motivation of our work has been to extend these two methods to uniformly handle both partial and total correctness. To our knowledge, the method of [5] is the f... |

4 |
von Neumann: Planning and Coding Problems for an Electronic Computing Instrument
- Goldstein, J
- 1961
(Show Context)
Citation Context ...ng the successive returns, the depth of the call stack decreases. 5 Related Work Operational semantics were introduced by McCarthy [15]. The notion of assertions was used by Goldstein and von Neumann =-=[16]-=-, and Turing [17], and made explicit by Floyd [18], Hoare [11], and Dijkstra [12]. Hoare and Dijkstra introduced program logics to provide a formal basis for the assertional method. King [19] wrote th... |

3 |
T.: Proving Pointer Programs in Higher Order Logic
- Mehta, Nipkow
- 2003
(Show Context)
Citation Context ...for formalization of Java and the JVM [22], and in PVS to model graphical state chart languages [23]. Assertional methods have been applied, using a verified VCG, to reason about pointers in Isabelle =-=[24]-=-, and C programs in HOL [25]. Our work is influenced by two related previous efforts by the individual authors, namely Moore [5] for verifying partial correctness, and Matthews and Vroon [7] for showi... |

1 | Partial Clock Functions in ACL2 - Kaufmann, Manolios, et al. - 2000 |