Церковные цифры работают только в том случае, если вы включили непредсказуемый Set
, вставив -arg -impredicative-set
в файл _CoqProject
или используя параметр командной строки -impredicative-set
.Затем определите nat
как:
Definition nat : Set := forall (X : Set), X -> (X -> X) -> X.
Impredicative Set
позволяет nat
иметь точно такой же тип Set
, который он определяет количественно.Без непредсказуемости nat
должен иметь более высокий уровень вселенной, чем тот, на котором он количественно определен, хотя уровни скрыты от вас, пока вы не получите ошибку, как в вопросе.
Обратите внимание, что непредсказуемое Set
равно несовместим с классической логикой.