Sequential execution
What if there are multiple statements
We create an intermediate assertion
We reason (usually) backwards to prove the Hoare triples
A formalization of this approach essential defines the ; operator in most programming languages
{x > 0} y := x*2; z := y/2{z > 0}
{x > 0} y := x*2;{y > 0} z := y/2{z > 0}