আচরণগত সাবটিপিং কেন অনস্বীকার্য?


12

এই অঞ্চলে লিসকভের কাজ আচরণগত সাব টাইপিংয়ের উপর দৃষ্টি নিবদ্ধ করেছে, যা এই নিবন্ধে আলোচিত টাইপ সিস্টেম সুরক্ষার পাশাপাশি সাবটাইপসকে কিছু চুক্তিতে সুপারটাইপের দ্বারা গ্যারান্টিযুক্ত সমস্ত আক্রমণকারীদের সংরক্ষণ করা প্রয়োজন [[3] সাবটাইপিংয়ের এই সংজ্ঞাটি সাধারণত অনস্বীকার্য, সুতরাং এটি কোনও প্রকার পরীক্ষক দ্বারা যাচাই করা যায় না।

থেকে: http://www.wikiwand.com/en/Subtyping#/Function_tyype

উত্তর:


24

oপ্রকারের ক্রিয়াকলাপের চুক্তিটি Tএমন হতে দিন যে এটি সমস্ত ইনপুটগুলির জন্য থেমে আছে। এখন সিদ্ধান্ত নেন অপারেশন কিনা oউপপ্রকার S <: Tসন্তুষ্ট যে চুক্তি: আপনি শুধু সমাধান আছে স্থগিত সমস্যা

আরো সাধারণভাবে, S::oহিসাবে একই ফাংশন গনা আবশ্যক T::oযদি S <: T। দুটি প্রোগ্রাম একই ফাংশন গণনা করবে কিনা তা সিদ্ধান্ত ফাংশন সমস্যা বলা হয় এবং হ্যালটিং সমস্যা সমাধানের সমতুল্য।

সাধারণভাবে, কোনও তুচ্ছ রান্টটাইম সম্পত্তি স্থিরভাবে সিদ্ধান্ত নেওয়া প্রায় সর্বদা হোলটিং সমস্যার সমতুল্য।


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

5
@ বেনজামিন গ্রেনবাউম জর্জের উত্তর এবং আপনার মন্তব্য সঠিক তবে এটির একটি সূক্ষ্মতা আছে যা আমি পরিষ্কার করতে চাই। নির্দিষ্ট প্রোগ্রাম সম্পর্কে সম্পত্তি প্রমাণ করা প্রায়শই সম্ভব । এখানে এমন কোনও অ্যালগরিদম নেই যা আপনি অন্ধভাবে অনুসরণ করতে পারেন যা সমস্ত প্রোগ্রামের জন্য কাজ করবে । জাভাতে লেখা এই পদ্ধতিটি বিবেচনা করুন: BigInteger sum(int[] arr) { BigInteger sum = BigInteger.ZERO; for (int x: arr) sum = sum.add(BigInteger.valueOf(x)); return sum; }প্রমাণ করা শক্ত নয় যে নির্দিষ্ট পদ্ধতিটি সর্বদা পূর্ণসংখ্য অ্যারের উপাদানের যোগফল দেয় এবং অন্য কিছুই করে না (প্রদত্ত যুক্তিটি বাতিল না হলে)।
ডোভাল

1
এবং যখন এটি থামানো সমস্যার সমতুল্য না হয়, এটি প্রায়শই আরও খারাপ হয়কারণ অসম্ভবটি ইতিমধ্যে যথেষ্ট কঠিন ছিল না।
ব্যবহারকারী 2357112 18 45 এ মনিকা

2
অথবা ডোভালের বক্তব্যকে অন্য একটি (ভোঁতা) উপায়ে বলতে গেলে এটি ঠিক কারণ নন- টিউরিংয়ের সম্পূর্ণ ভাষা আকর্ষণীয় এবং দরকারী। বাস্তব কাজের জন্য আপনার প্রায়শই টুরিং-সম্পূর্ণতা (অবশ্যই মডিউল স্তরে) প্রয়োজন হয় না।
লুশেনকো

@ ডোভাল: খুব ভালো কথা। যদিও এটি সত্য যে আপনার কোনও অ্যালগরিদম থাকতে পারে না যা বাতিল এবং / বা এলোমেলো প্রোগ্রামের সঠিকতা প্রমাণ করে, প্রোগ্রামগুলি এমনভাবে লেখা সম্ভব যে আপনি তাদের সঠিকতা প্রমাণ করতে পারবেন।
জর্জিও

12

কারণ প্রোগ্রামগুলির আচরণ সম্পর্কে প্রায় প্রতিটি প্রশ্নই অনস্বীকার্য। দ্বারা চাল এর উপপাদ্য , ফর্ম যাবতীয় সিদ্ধান্ত সমস্যা:

কিছু প্রোগ্রাম গুনে ফাংশন যা এই সম্পত্তি আছে, অন্যান্য প্রোগ্রাম গণনা ফাংশন যে এই সম্পত্তি নেই। একটি প্রোগ্রাম পি দেওয়া, পি দ্বারা গণনা করা ফাংশন কি পূর্বোক্ত সম্পত্তি আছে বা না?

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

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


3
আপনি কিছুটা স্পষ্ট করে বলতে পারেন: এটি এমন নয় যে কোনও একক প্রদত্ত প্রোগ্রাম, যতই প্যাথলজিকালই হোক না কেন, সমস্ত বিশ্লেষণকে প্রতিহত করতে পারে, তবে এটি যে কোনও বিশ্লেষণের জন্য কমপক্ষে একটি প্রোগ্রাম রয়েছে যা এর সাথে যথাযথভাবে শ্রেণিবদ্ধ করা যায় না।
নাথান টগি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.