我無法理解構造函數的原理以及它的工作原理。 例如,在勒柯克,我們都被教導來定義自然數是這樣的: Inductive nat : Type :=
| O : nat
| S : nat -> nat.
而且已被告知,S是一個構造,但究竟是什麼意思? 如果我再做: Check (S (S (S (S O)))).
我得到的,它是4和nat類型。 這是如何工作的,Coq如何知
我的定義歸納類型: Inductive InL (A:Type) (y:A) : list A -> Prop :=
| InHead : forall xs:list A, InL y (cons y xs)
| InTail : forall (x:A) (xs:list A), InL y xs -> InL y (cons x xs).
Inductive SubS