我希望能够限制归纳定义中构造函数所允许的输入类型。比如说,我想要这样定义二进制数:
Inductive bin : Type :=
| O : bin
| D : bin -> bin
| S : bin -> bin.
这里的思想是通过在末尾添加零来使非零数字加倍,而S则将以零结尾的数字的最后一位变为1。这意味着以下数字是合法的:
S 0
D (S 0)
D (D (S 0))
以下内容不符合要求:
S (S 0)
D 0
有没有一种干净的方法在归纳定义中实施这样的限制?