প্রমাণ এবং প্রোগ্রামগুলির মধ্যে পার্থক্য কী (বা প্রস্তাব এবং প্রকারের মধ্যে)?


26

কারি-হাওয়ার্ডের চিঠিপত্রটি এত বেশি বিস্তৃত / প্রসারিত হওয়া সত্ত্বেও , প্রমাণ এবং প্রোগ্রামগুলির মধ্যে (বা প্রস্তাব এবং প্রকারের মধ্যে) কোনও পার্থক্য রয়েছে কি? আমরা কি তাদের সত্যই সনাক্ত করতে পারি?



অপটি যদি চান, @ একটি মন্তব্যে এবং আমি আপনার জন্য এটি স্থানান্তর করতে পারি।

2
জন ক্রসলি এ সম্পর্কে একটি নিবন্ধ লিখেছিলেন যে আমি সম্প্রতি কোথাও পোস্ট হওয়া দেখতে পেয়েছি: [প্রমাণ এবং প্রোগ্রামগুলির মধ্যে পার্থক্য কী?] [ Citeseerx.ist.psu.edu/viewdoc/… - আমি এখনও এটি পড়িনি, তবে এটি প্রস্তাবিত এসেছিল ...
টিজে এলিস

1
@ টিজে এলিস, লিঙ্কটির জন্য ধন্যবাদ, তবে একটি সংক্ষিপ্ত স্কিমের পরে, মনে হচ্ছে কাগজটি তার শিরোনামে উত্থিত প্রশ্নের উত্তর দেয় না (বা উত্তরটি "তারা একই")।
সর্বাধিক টাল্ডকিন

@ টিজে এলিস, আপনি কি এটি reddid / r / compsci তে পোস্ট করেছেন? আমি এটি করেছি,;) @ ম্যাক্স, আমি অনুভব করেছি, এজন্যই আমি এই প্রশ্নটি পোস্ট করি।

উত্তর:


20

লোকেরা প্রতিদিন যে প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করে সেগুলি কারি-হাওয়ার্ডের চিঠিপত্রের পক্ষে এতটা ফিট হয় না, কারণ তাদের টাইপ সিস্টেমগুলি খুব দুর্বল। জরুরী প্রোগ্রামগুলির জন্য কারি-হাওয়ার্ড ব্যবহার করে আকর্ষণীয় কিছু বলার জন্য, একটি আরও পরিশীলিত টাইপ সিস্টেম থাকা দরকার। প্রেজ-অ্যাস-প্রোগ্রামিং অ্যাডাপ্টিং বইটি অত্যাবশ্যক প্রোগ্রামগুলিকে সংশ্লেষ করার লক্ষ্যে এই কোণটিকে ঠেলে দিয়েছে। নির্ভরশীল প্রকারগুলি আরও বেশি জনপ্রিয় হওয়ার সাথে সাথে গবেষণামূলক কার্যকরী ভাষায় ( আগদা , এপিগ্রাম ), পার্থক্যটি ঝাপসা হয়ে উঠছে। অবশ্যই আপনি কোক উপপাদ্য প্রবাদের মধ্যে প্রোগ্রাম সংশ্লেষণ / নিষ্কাশন করতে পারেন (এবং সম্ভবত অন্যরা), যা অবশ্যই কারি-হাওয়ার্ডের উপর ভিত্তি করে।

কারি-হাওয়ার্ডের চিঠিপত্রগুলি এমন পরিস্থিতিতেও ব্যবহার করা যেতে পারে যেখানে প্রমাণগুলি প্রোগ্রামগুলির সাথে এতটা স্পষ্টভাবে মেলে না (বা তারা এমন কোনও প্রোগ্রাম নয় যা কেউ কখনও চালাবে)। এর একটি উদাহরণ প্রুফ বহনকারী অনুমোদনে । প্রস্তাবগুলি হ'ল কে কী করতে অনুমোদিত তা সম্পর্কে বিবৃতিগুলির সাথে মিলে যায়। প্রমাণগুলি প্রয়োজনীয় প্রমাণ সরবরাহ করে যা কোনও প্রস্তাব রাখে, সুতরাং অনুমোদনের অনুরোধ অনুমোদিত। প্রমাণগুলি এনকোড করার জন্য, প্রমাণ পদগুলি চালু করা হয়েছিল (কারি-হাওয়ার্ডের মাধ্যমে)। প্রমাণ শর্তাদি অনুমোদনের অনুরোধগুলির বৈধতার প্রমাণের উপস্থাপনা হিসাবে দলগুলির মধ্যে প্রেরণ করা হয়, তবে সেগুলি প্রোগ্রাম হিসাবে বিবেচিত হয় না।


1
আপনার নির্ভরশীলভাবে টাইপ করা ভাষাগুলি উল্লেখ করা উচিত, যেমন তাদের মধ্যে প্রমাণ এবং প্রস্তাবগুলির মধ্যে রেখাটি ঝাপসা হয়ে যায়।
ওহাদ কামার

1
প্রকৃতপক্ষে. আসুন কাকের প্রোগ্রাম সংশ্লেষণ / নিষ্কাশনটি ভুলে যাবেন না।
ডেভ ক্লার্ক

কোন প্রোগ্রামটি একটি অ-গঠনমূলক (শাস্ত্রীয়) প্রমাণের সাথে ? (অনুমান করুন যে কিছু আকর্ষণীয় সিদ্ধান্ত গ্রহণযোগ্য সম্পর্ক, যেমন পদক্ষেপে তম টিএম বন্ধ রয়েছে )) (উত্তরটি খুব ছোট না হলে আমি এটি একটি নতুন প্রশ্ন হিসাবে জিজ্ঞাসা করতে পারি))টি কেk T(e,k)¬k T(e,k)Tek
কাভেঃ

1
@ কাভেঃ এটিকে আলাদা প্রশ্ন হিসাবে জিজ্ঞাসা করুন। একটি মন্তব্যে আপনি বলতে পারেন "গডেল-জেন্টজেন অনুবাদ একটি ধারাবাহিকতা-পাসিং রূপান্তর" তবে এর চেয়ে কম ক্রিপ্টিক কোনও কিছুই খাপ খায় না। :)
নীল কৃষ্ণস্বামী

@Neel, সম্পন্ন হয়েছে: cstheory.stackexchange.com/q/5245/186
Kaveh

10

কক-তে, 2 প্রকার (প্রপ এবং সেট) রয়েছে, তারা প্রোগ্রামার দ্বারা এমন প্রমাণগুলি পৃথক করতে ব্যবহার করে যা প্রকৃত কোড তৈরি করে না এবং প্রমাণের অংশ যা চলমান কোড বের করার জন্য ব্যবহৃত হবে (আপনার প্রোগ্রাম)।

আপনি যে সমস্যার বিষয়ে জিজ্ঞাসা করছেন, মেশিন কোড (প্রোগ্রাম) তৈরি করতে কী বোঝায় এবং প্রস্তাবনার প্রমাণ (বা টাইপ) শেষ করার জন্য কী উপস্থিত রয়েছে তা কীভাবে চিহ্নিত করতে হয় তার জন্য এটি একটি দুর্দান্ত সমাধান।

এএফআইকে উভয়কে আলাদা করার কোনও স্বয়ংক্রিয় উপায় নেই। এটি গবেষণার জন্য আকর্ষণীয় কিছু হতে পারে? বা কেউ সম্ভবত এটি অসম্ভব অসম্ভব উল্লেখ করতে সক্ষম?

নির্ভরশীল প্রকারের সাথে কেবল প্রমাণ এবং প্রোগ্রামগুলির মধ্যে একটি স্পষ্ট পার্থক্য নেই তবে প্রোগ্রাম এবং প্রকারের মধ্যে কোনও পার্থক্য নেই! কেবলমাত্র পার্থক্য হবে যেখানে প্রকার (বা প্রোগ্রাম) প্রদর্শিত হয়, এটি "প্রোগ্রাম" স্থানের অংশ হিসাবে বা নির্দিষ্ট শব্দটির "টাইপ" স্থানের অংশ করে তোলে।

একটি উদাহরণ এটি আরও পরিষ্কার করে দেবে আশা করি:

আপনি যখন নির্ভরশীল ধরণের সাথে পরিচয় ফাংশনটি ব্যবহার করেন তখন আপনি যে ধরণের সাথে ফাংশনটি ব্যবহার করতে চলেছেন তা আপনাকে পাস করতে হবে! আপনার "প্রোগ্রাম" এ ধরণের মান হিসাবে ব্যবহৃত হচ্ছে!

অবিরত ল্যাম্বদা ক্যালকুলাস:

আইডি =λx.x

নির্ভরশীল প্রকার সহ:

আইডি: (এ: সেট) -> এ -> এ

আইডি =(λA.(λx.x))

আপনি যদি এই ফাংশনটি ব্যবহার করে থাকেন তবে আপনি এটির উদাহরণটি যেমন করুন:

আইডি ন্যাচারালস 1

লক্ষ্য করুন যে "টাইপ" (এই ক্ষেত্রে সেট অফ ন্যাচারালস) একটি মান হিসাবে পাস হচ্ছে তাই এটিকে কখনই গণনা করা হবে না, তবুও এটি শব্দটির "প্রোগ্রাম" অংশে রয়েছে। "প্রুফ" অংশগুলির সাথেও এটি ঘটবে, টাইপ-চেক করার জন্য শব্দটির জন্য তাদের উপস্থিত হওয়া দরকার তবে গণনার সময় সেগুলি ফেলে দেওয়া হবে।


6

আমি এখানে একটি অঙ্গ নেব এবং বলব যে, আপনি কিছু বাদ দিতে ইচ্ছুক হলে, প্রমাণ এবং সমাপ্তি প্রোগ্রাম সনাক্ত করা যেতে পারে।

যে কোনও সমাপ্তি প্রোগ্রাম হ'ল একটি প্রমাণ যা আপনি এটির ইনপুট নিতে এবং এর আউটপুট উত্পাদন করতে পারেন। এটি জড়িত থাকার খুব প্রাথমিক ধরণের প্রমাণ।

অবশ্যই, এই স্পষ্টতাত্ত্বিক তথ্য বহনকারীকে স্পষ্ট করে বলার চেয়ে আরও অর্থবহ করে তোলার জন্য, আপনাকে দেখানোর পক্ষে সক্ষম হতে হবে যে প্রোগ্রামটি যে কোনও এবং সমস্ত ইনপুট টানা দৃষ্টান্তের জন্য যৌক্তিক অর্থ সহ কিছু বর্গ গঠন করে। (এবং তাই আউটপুট জন্য।)

অন্য দিক থেকে, সীমাবদ্ধ আনমন পদক্ষেপের সাথে কোনও প্রমাণ হ'ল কিছু যৌক্তিক সিস্টেমে বস্তুগুলি ম্যানিপুলেট করার প্রতীকী প্রোগ্রাম। (যদি আমরা যৌক্তিক চিহ্ন এবং বিধিগুলি গণনাগতভাবে কী বোঝায় সে সম্পর্কে খুব বেশি চিন্তা না করি))

প্রকার এবং প্রস্তাব একইভাবে কাজ করা যেতে পারে। যে কোনও ধরণের টি প্রস্তাব দেওয়া যেতে পারে স্পষ্ট সত্য শর্ত সহ। যে কোনও প্রস্তাবকে তার প্রুফের প্রকারে পরিণত করা যেতে পারে।x:xT

এটি বেশ সরল, তবে আমি মনে করি এটি ধারণার দৃust়তার পরিচয় দেয়। (এমনকি কিছু লোক এটি পছন্দ না করার জন্য আবদ্ধ থাকলেও ;;-))


খুব ভাল উত্তর।
টোটো

একটি অবশ্যই অবশ্যই ধরে নেওয়া উচিত যে আপনার অর্থ সীমাবদ্ধ প্রমাণ এবং সমাপ্তি প্রোগ্রামগুলি। কিছু ক্লাস-টার্মিনেটিং প্রোগ্রাম অসীম প্রমাণ হিসাবে ঠিক সূক্ষ্মভাবে কাজ করে। এটি অ-উত্পাদনশীল অ-টার্মিনেটিং প্রোগ্রামগুলির জন্য আপনার নজর রাখা দরকার।
wren রোমানো

আমি মনে করি এটি কিছুটা জটিল, আপনি কীভাবে প্রমাণের ক্ষেত্রে সীমাবদ্ধ এবং অসীম সংজ্ঞা দিচ্ছেন তার উপর নির্ভর করে। সাধারণভাবে, আমরা যে সমস্ত প্রমাণ গ্রহণ করি তা সীমাবদ্ধ, কারণ তাদের একটি অল্প সময়ের মধ্যে একটি মানুষকে বোঝাতে হবে। একটি প্রমাণ যা একটি ইন্ডাকশন স্কিমের উপর নির্ভর করে (যেমন সর্বাধিক "অসীম" প্রমাণগুলি) এই পরিমাপটি এখনও সীমাবদ্ধ, তাদের কেবল প্রতীকী পদক্ষেপ রয়েছে যা একটি অসীম তবে নিয়মিত গণনা উপস্থাপন করে। সত্যই একটি অসীম প্রমাণ, যা আমি মনে করি আমাদের মধ্যে বেশিরভাগই বৈধ প্রমাণ হিসাবে প্রত্যাখ্যান করবে, এমন একটি হবে যেখানে আপনাকে আক্ষরিক বৈধতার জন্য অসীম সংখ্যক স্বতন্ত্র ঘটনা বিবেচনা করতে হবে।
মার্ক হামান

5

প্রুফ অপ্রাসঙ্গিকতা?

আপনি যখন কোনও প্রোগ্রাম লেখেন, আপনি এর কার্যকারিতা, স্মৃতিশক্তি গ্রহণ ইত্যাদিতে আগ্রহী হন
Eg উদাহরণস্বরূপ, বুদ্বুদ সাজানোর পরিবর্তে কিছু চতুর বাছাই করা অ্যালগরিদম ব্যবহার করা ভাল, এমনকি যদি তাদের প্রয়োগগুলি একই ধরণের (এমনকি নির্ভরশীল টাইপ সেটেও থাকে)।

তবে আপনি যখন কিছু উপপাদ্য প্রমাণ করেন এটি কেবল আপনার আগ্রহী সেই প্রমাণের অস্তিত্ব।

অবশ্যই, নান্দনিক দৃষ্টিকোণ থেকে, কিছু প্রমাণগুলি আরও সহজ / সুন্দর / অনুপ্রেরণামূলক / ইত্যাদি (যেমন দ্য বইয়ের প্রমাণ) from


4

আপনি যদি কারি – হাওয়ার্ডের চিঠিপত্র গ্রহণ করেন তবে প্রশ্নটি মূলত দার্শনিক one "প্রমাণ এবং প্রোগ্রামগুলি কি আলাদা? অবশ্যই। কীভাবে? আমরা প্রমাণকে 'প্রমাণ' বলি এবং আমরা প্রোগ্রামগুলিকে 'প্রোগ্রাম' বলি।"

অথবা এটিকে কম বিব্রতকরূপে বলতে গেলে, যদি প্রমাণ এবং প্রোগ্রামগুলির মধ্যে একটি বিস্মৃততা থাকে - যা স্পষ্টভাবে মনে হয় your তবে আপনার প্রশ্নটি জিজ্ঞাসা করছে যে এই দুটি পার্থক্য করতে সক্ষম কোনও ওરેકল আছে কি না। মানুষগুলি তাদের আলাদা হিসাবে শ্রেণীবদ্ধ করে (বেশিরভাগ অংশের জন্য), সুতরাং এটি অবশ্যই তর্কযোগ্য যে এই ধরণের ওরাকল বিদ্যমান। তারপরে গুরুত্বপূর্ণ প্রশ্নটি হয়ে ওঠে যে তাদের মধ্যে কোনও অর্থপূর্ণ পার্থক্য রয়েছে কিনা , যা দার্শনিক বিতর্কের পক্ষে রয়েছে। একটি "প্রমাণ" কি? কোন প্রমাণকে গঠন করে তার কোনও আনুষ্ঠানিক সংজ্ঞা নেই; এটি শিল্পের একটি শব্দ, অনেকটা চার্চ-টিউরিং থিসিসের "কার্যকরভাবে গণনাযোগ্য" ধারণাটির মতো। এই বিষয়ে, "প্রোগ্রাম" এর কোনও আনুষ্ঠানিক সংজ্ঞা নেই।

এগুলি গাণিতিক অনুসন্ধানের বিভিন্ন ক্ষেত্রকে শ্রেণিবদ্ধ করতে ব্যবহৃত প্রাকৃতিক ভাষার শব্দ। কারি এবং হাওয়ার্ড যা পর্যবেক্ষণ করেছেন তা হ'ল এই দুটি ভিন্ন ক্ষেত্র যেখানে বাস্তবে একই জিনিসটি অধ্যয়ন করে। এই সংযোগটি পর্যবেক্ষণ করা গুরুত্বপূর্ণ কারণ এটি বলে যে এই বিভিন্ন গবেষককে একে অপরের সাথে কথা বলা উচিত। তবে অন্য স্তরে, সংযোগটি লক্ষ্য করা তাদের মধ্যে পার্থক্যকে বিশ্বাস করা। কোনও সমস্যা মোকাবেলা করার সময়, কখনও কখনও এটিকে প্রোগ্রামিং সমস্যা হিসাবে ভাবা আরও বেশি উপকারী, অন্য সময় এটি যৌক্তিক সমস্যা হিসাবে ভাবা বেশি উপকারী। দৃষ্টিভঙ্গিতে এই পার্থক্যটি আমি মনে করি, তাদের মধ্যে গুরুত্বপূর্ণ পার্থক্য। তবে দৃষ্টিভঙ্গির পার্থক্য পরিচয়ের একটি পার্থক্য গঠন করে কিনা এটি একটি গভীর দার্শনিক প্রশ্ন যা কমপক্ষে ফ্রিজের মতোই অনুসন্ধান করা হয়েছেউবার সিন ও আন বেদেউতুং

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.