3) Hoare Logic
a) {M>=0} X:=0; N:=1; while N<=M do begin X:=X+N; N:=N+1; end:
{X = M*(M+1) DIV 2 }
INV: { X = (N-1)*N DIV 2 & N<=M+1 }
b) {X=x ^ Y=y}
S:=0;
while ~(X=0) do
begin
while ~(odd X) do
begin Y:=2*Y; X:=X DIV 2 end;
S:=S+Y;
X:=X-1;
end;
{S = x*y }
INV: {S + (X*Y) = x*y}