Il terzo capitolo di CPDT illustra brevemente perché i tipi induttivi negativi sono vietati in Coq. Se avessimoProving False con tipi induttivi negativi in Coq
Inductive term : Set :=
| App : term -> term -> term
| Abs : (term -> term) -> term.
allora potremmo facilmente definire una funzione
Definition uhoh (t : term) : term :=
match t with
| Abs f => f t
| _ => t
end.
in modo che il termine uhoh (Abs uhoh)
sarebbe non fatale, con la quale "saremmo in grado di dimostrare ogni teorema".
Capisco la parte senza terminazione, ma non capisco come possiamo provare qualcosa con esso. Come si dimostrerebbe False
utilizzando term
come definito sopra?