インデックスが等しい誘導型は等しいインデックスを意味します


9

fooインデックスが付けられた帰納的なタイプがあるとしますx : X

Parameter X : Type.

Inductive foo : X -> Type :=
| constr : forall (x : X), foo x.

foo x = foo y意味する場合、私は好奇心が強いx = y。これを証明する方法がわかりません。

Lemma type_equality_implies_index_equality : forall (x y : X), foo x = foo y -> x = y.

これが証明できない場合、なぜですか?

回答:


8

証明できません。次のように設定するとき、定理の次の特別なケースを考えますX := bool

foo true = foo false -> true = false

ことを考えるtrueと、false定理が証明可能であれば異なっている、あることを示すことが可能であるべきであるfoo trueとはfoo false異なっています。問題は、これら2つのタイプが同型であることです。

Inductive foo : bool -> Type :=
| constr : forall (x : bool), foo x.

(* An isomorphism between foo true and foo false *)
Definition foo_t_f (x : foo true) : foo false := constr false.
Definition foo_f_t (x : foo false) : foo true := constr true.

(* Proofs that the functions are inverses of each other *)
Lemma foo_t_fK x : foo_f_t (foo_t_f x) = x.
Proof. unfold foo_f_t, foo_t_f. now destruct x. Qed.

Lemma foo_f_tK x : foo_t_f (foo_f_t x) = x.
Proof. unfold foo_f_t, foo_t_f. now destruct x. Qed.

Coqの理論では、余分な公理を仮定せずに2つの同型タイプが異なることを示すことはできません。これが、ホモトピー型理論などのCoqの理論の拡張が適切である理由です。HoTTでは、同型の型が等しいことを示すことができ、定理を証明することが可能である場合、HoTTは矛盾します。


頭が痛いけど、きっとわかった。「Coqの理論では、2つの同型の型が異なることを、余分な公理を仮定せずに示すことは不可能です」という記述の参照がありますか??
トム

そして、それを示すことは可能(x <> y) -> (foo x <> foo y)ですか?中途排除の原則がなければ、私はこの世界で本当に混乱しています。
トム

私が知っている最良のリファレンス(おそらく最もアクセスしやすいとは限りません)は、ホフマンとストライチャーの論文「グループ理論の型理論の解釈」です。ホフマンが言うように(ncatlab.org/homotopytypetheory/files/HofmannDMV.pdf)、同型型が等しいマーティン・ロフ型理論の健全な拡張を持つことができます。この結果はCoqの理論にも当てはまります。
Arthur Azevedo De Amorim

そして、いいえ、反対を示すことはできません。私がtrueとfalseで示した反例も、そのステートメントと矛盾します。
Arthur Azevedo De Amorim
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.