পটভূমি
কাক, আমি নিজে থেকে শিখছি। এখনও অবধি আমি হুড়িতে ইয়েভেস বার্টোটের কক পড়া শেষ করেছি । এখন, আমার লক্ষ্য প্রাকৃতিক সংখ্যাগুলি সম্পর্কে কিছু প্রাথমিক ফলাফল প্রমাণ করা, তথাকথিত বিভাগ অ্যালগরিদমের সাথে সমাপ্তি। যাইহোক, আমি সেই লক্ষ্যে যাওয়ার পথে কিছুটা বিপর্যয়ের মুখোমুখি হয়েছি। বিশেষত, নিম্নলিখিত দুটি ফলাফল প্রমাণ করেছেন (শ্লেষাকৃত) আমি কাক মধ্যে প্রবর্তন করা আরও কঠিন হিসাবে আমি প্রাথমিকভাবে কল্পনা করেছিলাম। প্রকৃতপক্ষে, আমি অনেক নিরর্থক প্রচেষ্টার পরেও তাদের হাতে প্রমাণ করার জন্য অবলম্বন করেছি (নীচে দেখানো হয়েছে) এটি স্পষ্টতই আমাকে কাক পরিচালনার ক্ষেত্রে আরও দক্ষ হতে সাহায্য করে না; যে কারণে আমি এই ফোরামে ঘুরছি। আমার আশা এই সাইটের যে কেউ সক্ষম এবং ইচ্ছুকআমার প্রমাণগুলি নীচে কোক স্বীকার করে এমন কোনও প্রমাণে অনুবাদ করতে আমাকে সহায়তা করার জন্য। সমস্ত সাহায্য আন্তরিকভাবে প্রশংসা করা হয়!
উপপাদ্য ক
সবার জন্য
অনুমান করা । অতএব আছে একটি সঙ্গে
একটি শিকারী নির্ধারণ করুন
এটি দেখাতে যথেষ্ট । আমরা অন্তর্ভুক্তি দ্বারা এটি প্রমাণ। দেখতে, যদি হয় না তারপর ধরে পেরোনো 1 এ দ্বারা সত্য। সুতরাং,। এখন, আমরা প্রমাণ: ধরুন । এই সংজ্ঞা থেকে আমাদের আছে এবং এগুলো এছাড়াও এই ক্ষেত্রে। শেষ পর্যন্ত, পেনোর পঞ্চম অ্যাক্সিয়াম দেয় এবং দ্বারা আমরা পেতে ।
উপপাদ্য বি
সবার জন্য
যদি তারপর সংজ্ঞা দ্বারা, এবং যদি তারপর সংজ্ঞা অনুসারে। যদি এবং তারপরে ট্রানজিটিভিটি এবং রিফ্লেক্সিভিটি দ্বারা আমাদের রয়েছে , যা একটি বৈপরীত্য। ফলস্বরূপ, একের বেশি বক্তব্য সত্য নয়।
আমরা রাখি স্থির এবং অন্তর্ভুক্ত । কখন আমাদের আছে সবার জন্য , যা বেস কেস প্রমাণ করে। এর পরে, ধরুন উপপাদ্যটি ধরে রেখেছে; এখন আমরা এর উপপাদ্য প্রমাণ করতে চাই। ট্রাইকোটমি থেকে, তিনটি ক্ষেত্রে রয়েছে: , এবং । যদিতারপর পরিষ্কারভাবে । যদিতাহলে (যেমন সবার জন্য )। অবশেষে, ধরুন তারপরে, উপপাদ্য ক দ্বারা আমাদের আছে অথবা , এবং উভয় ক্ষেত্রেই আমরা সম্পন্ন হয়েছি।
আমি যে উপপাদ্যগুলি প্রমাণ করতে চাই, তা কোক-এর নীচে প্রকাশ করা যেতে পারে।
লেমা কম_লেম (এক্সআই: এন): কম এক্স (স্যাক ওয়াই) -> বা (কম এক্সআই) (ইন এক্সআই)।
উপপাদ্য এনট্রাইকোটোমি: (ফোরাল এক্সআই: এন, বা (কম এক্সআই) (বা (এক্সএইচআই) (কম ইয়াক্স)))।
কার্যকর ফলাফল
এখানে আমি কিছু ফলাফল সংগ্রহ করেছি যা আমি সংজ্ঞায়িত করেছি এবং এ পর্যন্ত প্রমাণ করেছি। এইগুলি আমি উপরে উল্লেখ করি। * এই কোডটি আমি এ পর্যন্ত লিখতে পরিচালিত করেছি, লক্ষ্য করুন যে বেশিরভাগ সংজ্ঞা রয়েছে। *
(* Sigma types *)
Inductive Sigma (A:Set)(B:A -> Set) :Set :=
Spair: forall a:A, forall b : B a,Sigma A B.
Definition E (A:Set)(B:A -> Set)
(C: Sigma A B -> Set)
(c: Sigma A B)
(d: (forall x:A, forall y:B x,
C (Spair A B x y))): C c :=
match c as c0 return (C c0) with
| Spair a b => d a b
end.
(* Binary sum type *)
Inductive sum' (A B:Set):Set :=
inl': A -> sum' A B | inr': B -> sum' A B.
Print sum'_rect.
Definition D (A B : Set)(C: sum' A B -> Set)
(c: sum' A B)
(d: (forall x:A, C (inl' A B x)))
(e: (forall y:B, C (inr' A B y))): C c :=
match c as c0 return C c0 with
| inl' x => d x
| inr' y => e y
end.
(* Three useful finite sets *)
Inductive N_0: Set :=.
Definition R_0
(C:N_0 -> Set)
(c: N_0): C c :=
match c as c0 return (C c0) with
end.
Inductive N_1: Set := zero_1:N_1.
Definition R_1
(C:N_1 -> Set)
(c: N_1)
(d_zero: C zero_1): C c :=
match c as c0 return (C c0) with
| zero_1 => d_zero
end.
Inductive N_2: Set := zero_2:N_2 | one_2:N_2.
Definition R_2
(C:N_2 -> Set)
(c: N_2)
(d_zero: C zero_2)
(d_one: C one_2): C c :=
match c as c0 return (C c0) with
| zero_2 => d_zero
| one_2 => d_one
end.
(* Natural numbers *)
Inductive N:Set :=
zero: N | succ : N -> N.
Print N.
Print N_rect.
Definition R
(C:N -> Set)
(d: C zero)
(e: (forall x:N, C x -> C (succ x))):
(forall n:N, C n) :=
fix F (n: N): C n :=
match n as n0 return (C n0) with
| zero => d
| succ n0 => e n0 (F n0)
end.
(* Boolean to truth-value converter *)
Definition Tr (c:N_2) : Set :=
match c as c0 with
| zero_2 => N_0
| one_2 => N_1
end.
(* Identity type *)
Inductive I (A: Set)(x: A) : A -> Set :=
r : I A x x.
Print I_rect.
Theorem J
(A:Set)
(C: (forall x y:A,
forall z: I A x y, Set))
(d: (forall x:A, C x x (r A x)))
(a:A)(b:A)(c:I A a b): C a b c.
induction c.
apply d.
Defined.
(* functions are extensional wrt
identity types *)
Theorem I_I_extensionality (A B: Set)(f: A -> B):
(forall x y:A, I A x y -> I B (f x) (f y)).
Proof.
intros x y P.
induction P.
apply r.
Defined.
(* addition *)
Definition add (m n:N) : N
:= R (fun z=> N) m (fun x y => succ y) n.
(* multiplication *)
Definition mul (m n:N) : N
:= R (fun z=> N) zero (fun x y => add y m) n.
(* Axioms of Peano verified *)
Theorem P1a: (forall x: N, I N (add x zero) x).
intro x.
(* force use of definitional equality
by applying reflexivity *)
apply r.
Defined.
Theorem P1b: (forall x y: N,
I N (add x (succ y)) (succ (add x y))).
intros.
apply r.
Defined.
Theorem P2a: (forall x: N, I N (mul x zero) zero).
intros.
apply r.
Defined.
Theorem P2b: (forall x y: N,
I N (mul x (succ y)) (add (mul x y) x)).
intros.
apply r.
Defined.
Definition pd (n: N): N :=
R (fun _=> N) zero (fun x y=> x) n.
(* alternatively
Definition pd (x: N): N :=
match x as x0 with
| zero => zero
| succ n0 => n0
end.
*)
Theorem P3: (forall x y:N,
I N (succ x) (succ y) -> I N x y).
intros x y p.
apply (I_I_extensionality N N pd (succ x) (succ y)).
apply p.
Defined.
Definition not (A:Set): Set:= (A -> N_0).
Definition isnonzero (n: N): N_2:=
R (fun _ => N_2) zero_2 (fun x y => one_2) n.
Theorem P4 : (forall x:N,
not (I N (succ x) zero)).
intro x.
intro p.
apply (J N (fun x y z =>
Tr (isnonzero x) -> Tr (isnonzero y))
(fun x => (fun t => t)) (succ x) zero)
.
apply p.
simpl.
apply zero_1.
Defined.
Theorem P5 (P:N -> Set):
P zero -> (forall x:N, P x -> P (succ x))
-> (forall x:N, P x).
intros base step n.
apply R.
apply base.
apply step.
Defined.
(* I(A,-,-) is an equivalence relation *)
Lemma Ireflexive (A:Set): (forall x:A, I A x x).
intro x.
apply r.
Defined.
Lemma Isymmetric (A:Set): (forall x y:A, I A x y -> I A y x).
intros x y P.
induction P.
apply r.
Defined.
Lemma Itransitive (A:Set):
(forall x y z:A, I A x y -> I A y z -> I A x z).
intros x y z P Q.
induction P.
assumption.
Defined.
Lemma succ_cong : (forall m n:N, I N m n -> I N (succ m) (succ n)).
intros m n H.
induction H.
apply r.
Defined.
Lemma zeroadd: (forall n:N, I N (add zero n) n).
intro n.
induction n.
simpl.
apply r.
apply succ_cong.
auto.
Defined.
Lemma succadd: (forall m n:N, I N (add (succ m) n) (succ (add m n))).
intros.
induction n.
simpl.
apply r.
simpl.
apply succ_cong.
auto.
Defined.
Lemma commutative_add: (forall m n:N, I N (add m n) (add n m)).
intros n m; elim n.
apply zeroadd.
intros y H; elim (succadd m y).
simpl.
rewrite succadd.
apply succ_cong.
assumption.
Defined.
Lemma associative_add: (forall m n k:N,
I N (add (add m n) k) (add m (add n k))).
intros m n k.
induction k.
simpl.
apply Ireflexive.
simpl.
apply succ_cong.
assumption.
Defined.
Definition or (A B : Set):= sum' A B.
Definition less (m n: N) :=
Sigma N (fun z => I N (add m (succ z)) n).
Lemma less_lem (x y:N) :
less x (succ y) -> or (less x y) (I N x y).
intro.
destruct H.
right.
(* Here is where I'm working right now *)
Defined.
Theorem Ntrichotomy: (forall x y:N,
or (less x y) (or (I N x y) (less y x))).