В третьей главе CPDT кратко обсуждается, почему отрицательные индуктивные типы запрещены в Coq. Если бы мы имелиДоказательство False с отрицательными индуктивными типами в Coq
Inductive term : Set :=
| App : term -> term -> term
| Abs : (term -> term) -> term.
тогда мы могли бы легко определить функцию
Definition uhoh (t : term) : term :=
match t with
| Abs f => f t
| _ => t
end.
так, что термин uhoh (Abs uhoh)
будет не-терминатор, с помощью которого «мы сможем доказать каждую теорему».
Я понимаю часть без прерывания, но я не понимаю, как мы можем что-то доказать с ней. Как можно доказать False
с использованием term
, как определено выше?