3 ;;Quote: Hehner's 'if' statement is more robust than Dijkstra's 'do' because it fails if no guard is true, e.g., an unexpected state
|
3+;;Quote: can implement Dijkstra's 'do' statement via recursive calls of Hehner's 'if' statement
|
4 ;;Quote: a named constant (assign-once) can replace most variables except for repetition state
|
5 ;;Quote: repetitive control requires some way to record state; uses a invocation parameter that acts as a named constant
|
6 ;;Quote: a named constant is defined exactly once; any expression involving name constants has a fixed value as long as they are defined
|
7 ;;Quote: a refinement's name is also its precise specification; so prove that refinement matches its name
|
7+;;Quote: while proving a refinement, assume that a call does what its name promises
|
7 ;;Quote: the name of a refinement includes its precondition, its assignments to global variables, and an optional postcondition
|
7+;;Quote: a refinement is an assignment to a global named variable
|
8 ;;Quote: example of the weakest precondition for a simple assignment statement
|
8 ;;Quote: a postcondition is true after a statement; the canonical postcondition most restricts the state
|
10 ;;Quote: parameters carry values into refinements; global named constants carry values out
|
11 ;;Quote: global named constants are "wired in"; prevents multiple calls to a refinement
|
11 ;;Quote: a sequence of statements followed by an expression, has the value of the expression in the statements' context
|
11+;;Quote: ban side effects by disallowing global named constants; allows expression refinements to be used more than once in a scope
|
11 ;;Quote: example of writing a recursive expression refinement for factorial
|
11 ;;Quote: can replace inheritance of global named constants with parameters and results
|
11+;;Quote: can replace statement refinements by assigning the result of an expression refinement
|
15 ;;Quote: simplified the semantics of Dijkstra's mini-language, while increasing its expressiveness
|
15+;;Quote: refinement naming convention allows a new verification technique
|