I'm reading Programming - The derivation of algorithms, and I want to understand the purpose of a predicate transformer. This is the excerpt (p. 14-15):
A more precise way in which constructs may be introduced is as follows. For each construct $S$ one defines a predicate transformer, denoted $wp.S$, which is a function from predicates to predicates. For construct $S$ and predicate $Q$, $wp.S.Q$ is interpreted as the weakest predicate $P$ for which $\{P\}\,S\,\{Q\}$ holds. It is called the weakest precondition of $S$ with respect to $Q$. The relation between the expressions $\{P\}\,S\,\{Q\}$ and $wp.S.Q$ is given by
$$ \{P\}\,S\,\{Q\}$ \text{ is equivalent to } [P \implies wp.S.Q]$$
Explain me the concept predicate transformer. What is its purpose?