証人を抽出しようとしたが、実在型の用語から実際には存在しない場合はどうなりますか?


12

t : ∀x.∃y.(¬(x = 0) ⇒ x = S(y))Martin-Lofの型理論の項を考えると、の値は何ですか?存在型の項の証人を抽出する演算子はw(t(0))どこにwありますか?


¬(x=0)

はい、マーク、指摘してくれてありがとう、修正しました。

回答:


12

ty.(¬(0=0)0=S(y))y¬(0=0)0=S(y¬0=00=00=S00=S1y


10

マークの答えを示すためにt、Coqで書かれた次のステートメントの証拠を検討してください。証明ではk、型のパラメーターnatが与えられていると仮定します。case kの値として使用します。yx = 0

Parameter k : nat.

Theorem t : forall x : nat, { y : nat | x <> 0 -> x = S y}.
Proof.
  induction x.
  exists k; tauto.
  induction x.
  exists 0; auto.
  destruct IHx as [z G].
  exists (S z).
  intro H.
  elim G; auto.
Defined.

以下t 0と等しいことを証明できますk

Theorem A: projT1 (t 0) = k.
Proof.
  auto.
Qed.

protT1ので、そこにあるt 0だけの自然数ではなく、実際の自然数あることの証明0 <> 0 -> 0 = S yprojT1離れて証拠をスローします。

以下のために抽出OCamlのコードtコマンドで得られた、Extraction kあります

(** val t : nat -> nat **)

let rec t = function
  | O -> k
  | S n0 -> (match n0 with
              | O -> O
              | S n1 -> S (t n0))

繰り返しますt 0が、に等しいことがわかりkます。これは、仮に想定されたパラメーターでした。


Coq、Andrejの例に感謝します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.