ℓ কে কে কে ℓ পি আর ও পিPropপ্রোগ্রাম এক্সট্রাকশনের জন্য খুব দরকারী কারণ এটি আমাদের অকেজো কোডের কিছু অংশ মুছে ফেলার অনুমতি দেয়। উদাহরণস্বরূপ, একটি বাছাই আলগোরিদিম বের করে আনতে আমরা বিবৃতি প্রমাণ হবে "প্রত্যেক তালিকার জন্য একটি তালিকা আছে যেমন যে আদেশ করা হয় এবং একটি permutatiom হয় "। যদি আমরা এটিকে এবং ব্যবহার না করে এক্সট্র্যাক্ট করি তবে আমরা পাবেন:ℓkkkℓProp
- "সব জন্য " আমাদের একটি মানচিত্র দেবে যা তালিকাগুলিতে তালিকাগুলি নিয়ে যায়,কেℓk
sort
- "যেমন অর্ডার করা হয়েছে" একটি ফানসিটন দেবে যা দিয়ে চালিত হয় এবং এটি পরীক্ষা করা হয় যে এটি পরীক্ষা করে এবংk
verify
k
- " একটি বিন্যাস হয় একটি বিন্যাস দেব" যা লাগে করতে । মনে রাখবেন যে এটি কেবল কোনও ম্যাপিং নয়, তবে দুটি মানচিত্র সত্যই বিপরীত রয়েছে তা যাচাই করে এমন প্রোগ্রামগুলির সাথে একসাথে বিপরীত ম্যাপিংও রয়েছে।ℓ ℓ কেkℓ
pi
ℓkpi
অতিরিক্ত জিনিসগুলি সম্পূর্ণ অকেজো না হওয়া সত্ত্বেও, অনেক অ্যাপ্লিকেশনগুলিতে আমরা এ থেকে মুক্তি পেতে এবং ন্যায়বিচার রাখতে চাই sort
। এই যদি আমরা ব্যবহার সম্পন্ন করা যেতে পারে রাষ্ট্র থেকে " নির্দেশ দেওয়া হয়" এবং " একটি বিন্যাস হয় ", কিন্তু না "সবার জন্য আছে "। কে কে ℓPropkkℓকেℓk
সাধারণভাবে, কোডটি বের করার একটি সাধারণ উপায় হ'ল ফর্মের একটি বিবৃতি বিবেচনা করা যেখানে ইনপুট, আউটপুট এবং সঠিক আউটপুট হওয়ার অর্থ কী তা ব্যাখ্যা করে । (উপরের উদাহরণে এবং তালিকার ধরনের এবং হয় হল " আদেশ করা হয় এবং একটি বিন্যাস হয় ।") তাহলে হয় তারপর নিষ্কাশন একটি মানচিত্র দেয় যেমন যে সবার জন্য ঝুলিতেx y ϕ ( x , y ) y A B ϕ ( ℓ , k ) k k ℓ ϕ P r o p f : A → B ϕ ( x , f ( x ) ) x ∈ A ϕ∀x:A.∃y:B.ϕ(x,y)xyϕ(x,y)yABϕ(ℓ,k)kkℓϕPropf:A→Bϕ(x,f(x))x∈A । তাহলে হয় তারপর আমরা একটি ফাংশন পেতে যেমন যে প্রমাণ হল যে ঝুলিতে, সব জন্য । প্রায়শই প্রমাণ গণনামূলকভাবে অকেজো হয় এবং আমরা এ থেকে মুক্তি পেতে পছন্দ করি, বিশেষত যখন এটি অন্য কোনও বিবৃতিতে গভীরভাবে বাসা বেঁধে থাকে। আমাদের এটি করার সম্ভাবনা দেয়।ϕ g g ( x ) ϕ ( x ,Setgg(x)x ∈ A P r o pϕ(x,f(x))x∈AProp
যোগ করা হয়েছে 2015-07-29: একটি প্রশ্ন রয়েছে যে আমরা "অকেজো এক্সট্রাক্ট কোড" কে স্বয়ংক্রিয়ভাবে অপ্টিমাইজ করে পুরোপুরি এড়িয়ে চলতে পারি কিনা । কিছুটা হলেও আমরা এটি করতে পারি, উদাহরণস্বরূপ যুক্তির নেতিবাচক খণ্ড (সমস্ত খালি টাইপ, ইউনিটের ধরণ, পণ্যগুলি থেকে তৈরি স্টাফ) থেকে নিষ্কাশিত সমস্ত কোড অকেজো যেহেতু এটি ইউনিটের চারপাশে বদলে যায়। পি আর ও পি ব্যবহার করার সময় অবশ্যই জেনুইন ডিজাইনের সিদ্ধান্ত নিতে হবে । এখানে একটি simpe উদাহরণস্বরূপ, কোথায় Σ মানে হল, আমরা রয়েছি টি Y পি ই এবং ∃ মানে আমারা আছি পি দ ণ পি । যদি আমরা থেকে নিষ্কাশন
PropPropΣType∃Prop
আমরা একটি প্রোগ্রাম যা বিশ্লিষ্ট হয়েছে পাবেন এন তার সর্বনিম্ন বিট মধ্যে খ এবং অবশিষ্ট বিট ট , অর্থাত্, সবকিছু নির্ণয় করে। যদি আমরা Π n : N Σ b : { 0 , 1 } ∃ k : N থেকে নিষ্কাশন করি
Πn:NΣb:{0,1}Σk:Nn=2⋅k+b
nbk
পরে প্রোগ্রামটি কেবল সর্বনিম্ন বিট
বি গণনা করবে। মেশিনটি কোনটি সঠিক তা বলতে পারে না, ব্যবহারকারীকে তার কী বলতে হবে তা জানাতে হবে।
Πn:NΣb:{0,1}∃k:Nn=2⋅k+b
b