Due Thursday, April 13 at the start of class.
procedure SUB1(in x; out y): (x>1) -> ((y>0) & (x>y)) var a begin a := 1; y := x; y := y-a end
procedure P(in x; out y): y=(x+1) var a begin a := x+1; if (a-1)=0 then y := 1 else y := a endif end
procedure COPY2(in x; out y): y=x begin y := 0; while -(y=x) y := y+1 endwhile end
procedure Q(in x; out y): ((x=0) -> (y=0)) & (-(x=0) -> (y=1))