I have an inductive definition which—after evaluating—prints the warning "Ignoring recursive call". It seems that the definition works perfectly fine. However, I am still curious why exactly this warning is given. Below is a minimal example.
Inductive testor :=
| Constr1 : list testor -> testor
| Constr2 : testor -> testor.
I think the culprit is list testor
in the first constructor. On the other hand, the warning is not given without the second constructor.
Q: Why is the warning emitted? Does it mean a restriction is imposed on the inductive definition?
I am using Coq 8.5.