Jun 10, 2014 at 12:51 AM
Edited Jun 10, 2014 at 3:13 AM

I think steady state blockrecursions in blazer need improvement.
Here is a simple test.model:
!transition_variables
k,y,c,g
!transition_equations
k=3*y;
y=sqrt(k);
c=yg;
g=c/2;
If we run this using:
m=model('test.model');
sstatefile(m,'testss.model')
m.k=9;
m=sstate(m,'growth=',false,'blocks=',true);
then we can see that steady state file consists of one block, while Blazer should have separated the model in two blocks
k=3*y;
y=sqrt(k);
and
c=yg;
g=c/2;
However if we change the order of equations in the model file like this:
!transition_variables
g,c,y,k
!transition_equations
g=c/2;
c=yg;
y=sqrt(k);
k=3*y;
then the blazer works fine:
!equations
y=sqrt(k);
k=3*y;
!solvefor
y, k,
!equations
g=c/2;
c=yg;
!solvefor
c, g,
In the first example, occurrence matrix is
1100
1100
0111
0011
The presence of 1 at position (3,2) does not allow Blazer to separate two blocks since it is looking for one at the lower rectangle to the left of each diagonal cell.
In the second example, occurrence matrix is
1100
1110
0011
0011
Now two blocks can be separated.
