এটা প্রমাণ করা যায় না। উপস্থাপকের নিম্নলিখিত বিশেষ ক্ষেত্রে বিবেচনা করুন, যখন আমরা সেট করবX := bool
:
foo true = foo false -> true = false
প্রদত্ত true
এবং false
পৃথক পৃথক, যদি উপপাদ্য প্রমাণযোগ্য ছিল, এটি প্রদর্শিত হওয়া উচিত foo true
এবং foo false
পৃথক। সমস্যাটি হ'ল এই দুটি প্রকারটি isomorphic :
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.
ককের তত্ত্বে, অতিরিক্ত অক্ষরক্ষেত্র ধরে না নিয়ে দুটি আইসোমোরফিক প্রকার পৃথক বলে দেখানো সম্ভব নয়। এই কারণেই হোমেরোপি টাইপের তত্ত্বের মতো ককের তত্ত্বের একটি এক্সটেনশন শব্দসম্পন্ন । HoTT এ, isomorphic প্রকারগুলি সমান হিসাবে দেখানো যেতে পারে এবং যদি আপনার উপপাদ্য প্রমাণ করা সম্ভব হয় তবে HoTT অসঙ্গত হতে পারে।