Conditional execution
{P} if C then S1 else S2 fi{Q}
Must consider both branches
Ex: compute the maximum of two variables x and y
{true} if x >= y then max := x else max := y fi{max >= x ? max >= y}
{P} if C then S1 else S2 {Q}? {P ? C}S1{Q} ? {P ? ? C}S2{Q}