我想以某種方式限制允許在歸納定義中使用哪種輸入構造函數。說我想說的定義二進制數如下:Coq中的受限感應類型定義
Inductive bin : Type :=
| O : bin
| D : bin -> bin
| S : bin -> bin.
這裏的想法是,d通過在結尾處增加一個零雙打非零數字和S接受一個數字與零作爲最後一個數字並開啓最後一位數字變成一位。這意味着,以下是合法的數字:
S 0
D (S 0)
D (D (S 0))
而下面不會是:
S (S 0)
D 0
有沒有辦法在一個乾淨的方式強制執行的歸納定義這些限制嗎?
這似乎比其他答案更合理。我懶得寫一個。你可以把一個謂詞作爲額外的參數,但是然後寫數字很煩人。在需要時你可能不會關心和規範化。 – Ptival