Content deleted Content added
→Strongest postcondition: link with weakest-precondition |
mNo edit summary |
||
Line 1:
'''[[Predicate (mathematical logic)| Predicate]] transformer semantics''' have been introduced by [[Edsger W. Dijkstra|Dijkstra]] in its seminal paper "[[Guarded_commands |Guarded commands, nondeterminacy and formal derivation of programs]]". They define the semantics of an [[imperative programming]] language by assigning to each ''statement'' in this language a corresponding ''predicate transformer'': a [[total function]] mapping between two ''[[Predicate (mathematical logic)|predicates]]'' on the state space of the statement. Actually, in [[Guarded commands]], Dijkstra uses only one kind of predicate transformers: the well-known '''weakest preconditions''' (see below).▼
'''[[Predicate]] transformer semantics''' are a reformulation of [[Floyd–Hoare logic]]. Whereas Hoare logic was originally presented as a [[deductive system]], predicate transformer semantics (either by '''weakest-preconditions''' or by '''strongest-postconditions''' see below) give an effective [[algorithm]] to reduce the problem of verifying a Hoare triple to the problem of proving a [[First-order logic | first-order formula]]. ▼
▲
and runs ''forward'' in the case of strongest-postconditions).
▲Predicate transformer semantics have been introduced by [[Edsger W. Dijkstra|Dijkstra]] in its seminal paper "[[Guarded_commands |Guarded commands, nondeterminacy and formal derivation of programs]]". They define the semantics of an [[imperative programming]] language by assigning to each ''statement'' in this language a corresponding ''predicate transformer'': a [[total function]] mapping between two ''[[Predicate (mathematical logic)|predicates]]'' on the state space of the statement. Actually, in [[Guarded commands]], Dijkstra uses only one kind of predicate transformers: the well-known '''weakest preconditions''' (see below).
== Weakest preconditions ==
|