********* SOLUTION
********* Mode: in_copia
********* Scoping: dynamic

     call p1[]     
          a=1 ->	a:p1 = 1
          b=0 ->	b:p1 = 0
          c=0 ->	c:p1 = 0
          d=1 ->	d:p1 = 1
     call p4[c, a]     in_out_copia c <- c; in_out_rif d <- a; 
          a=2 ->	a:p4 = 2
          c=d ->	c:p4 = 1
          d=2 ->	d:p4 = a:p1 = 2
          b=b*2 ->	b:p1 = 0
     call p2[b]     in_out_rif d <- b; 
          a=4 ->	a:p4 = 4
          c=b ->	c:p2 = 0
          d=1 ->	d:p2 = b:p1 = 1
          b=2 ->	d:p2 = b:p1 = 2
     call p3[a]     in_copia d <- a; 
          a=c+4 ->	a:p4 = 4
          d=d+1 ->	d:p3 = 5
          b=c+a ->	d:p2 = b:p1 = 4
          c=d+2 ->	c:p2 = 7
          write[a, b, c, d]
4 4 7 5 
     leaving p3, back to p2
          write[a, b, c, d]
4 4 7 4 
     leaving p2, back to p4
          write[a, b, c, d]
4 4 1 2 
     leaving p4, back to p1
               copy c back -> c:p1 = 1
          write[a, b, c, d]
2 4 1 1 
     leaving p1

