Go backward to Recursively Defined Abstractions Go up to Top |
(alias A=loc1, alias B=loc2);
proc ADD = (rec ADD: comm.
if @A=0 then skip else
B:=@B+1; A:=@A-1; call ADD fi)
in A:=2; B:=3; call ADD
=>
alias A=loc1, alias B=loc2,
proc ADD = (rec ADD: comm.
if @loc1=0 then skip else
loc2:=@loc2+1; loc1:=@loc1-1;
call ADD fi)
in A:=2; B:=3; call ADD
=>
loc1:=2; loc2:=3;
(rec ADD: comm.
if @loc1=0 then skip else
loc2:=@loc2+1; loc1:=@loc1-1;
call ADD fi)
=>
loc1:=2; loc2:=3;
if @loc1=0 then skip else
loc2:=@loc2+1; loc1:=@loc1-1;
(rec ADD:
...fi) fi)