I am trying to simulate the ramsey_model attached where the planner optimally set 3 tax instruments, ie.: labour, consumption and capital taxation.
For avoiding trivial solutions, I am imposing labour tax to be greater or equal zero.

My expectation is that Coleman (2000)´s result applies to my model (here: https://www.sciencedirect.com/science/article/abs/pii/S0047272799000432). Namely that, in presence of these 3 taxes rates, and with the requirement on labour tax to be greater or equal zero, labour tax is always optimally set to zero by the planner. (So that, effectively, the problem is equivalent to a ramsey model with consumption and capital tax only.)

To check numerically that Coleman´s result applies in my model, I adopted the following strategy with dynare.

I am letting the planner to set all these three instruments, i.e.:

at the same time insert in the model block the condition:

taul=0

I will then solve the model and check the lagrangian multiplier associated with this latter condition. If it is equal zero, then Coleman´s result applies.

However, when running the model, the error at the object is produced. This is unexpected since the same model is running just fine when allowing for labour and capital tax only as instruments.

Can you please advise me on what I am doing wrong?

There is a problem with the number of instruments. You specified three instruments, but given that you set taul=0, there are only two equations missing in the model, instead of the three required for three instruments.

I was wondering, though: is that really the issue?
Take for example the alternative version of the model attached, which is the exact same as the previous one except that:

I removed the condition taul=0 (so now there are 3 equations missing in the model, to match the 3 instruments).

I introduced the ramsey_constraints block, to require taul>=0;

This version solves the problem you indicated above. Still it generates the same error message. Why is that?

Error using print_info (line 32)
One of the eigenvalues is close to 0/0 (the absolute value of numerator and denominator is smaller than 0.0000!
If you believe that the model has a unique solution you can try to reduce the value of qz_zero_threshold.

Error in check (line 48)
print_info(info, 0, options);

Error in Ramsey_Laffer_3rates_constraint.driver (line 309)
oo_.dr.eigval = check(M_,options_,oo_);

Error in dynare (line 293)
evalin(‘base’,[fname ‘.driver’]) ;

most probably caused by

MODEL_DIAGNOSTICS: The Jacobian of the static model is singular
MODEL_DIAGNOSTICS: there is 1 colinear relationships between the variables and the equations
Colinear variables:
Pb
d
taul
tauc
Colinear equations
10
MODEL_DIAGNOSTICS: The presence of a singularity problem typically indicates that there is one
MODEL_DIAGNOSTICS: redundant equation entered in the model block, while another non-redundant equation
MODEL_DIAGNOSTICS: is missing. The problem often derives from Walras Law.