রাসেলিয়ান টাইপ তত্ত্ব এবং টাইপ সিস্টেমের মধ্যে সম্পর্ক


12

আমি সম্প্রতি উপলব্ধি করেছি যে রাসেলিয়ান টাইপ থিওরি এবং টাইপ সিস্টেমের মধ্যে কিছুটা সম্পর্ক রয়েছে, যেমন হাস্কেলের মধ্যে পাওয়া গেছে। আসলে, হাস্কেলের প্রকারের জন্য কিছু স্বরলিপি টাইপ তত্ত্বের পূর্বসূরী বলে মনে হয়। তবে, আইএমএইচও, ১৯০৮ সালে রাসেলের অনুপ্রেরণা ছিল রাসেলের প্যারাডক্সটিকে এড়ানো এবং আমি নিশ্চিত নই যে এটি কম্পিউটার বিজ্ঞানের টাইপ সিস্টেমের সাথে কীভাবে সম্পর্কিত।

রাসেলের প্যারাডক্সটি কি কোনও রূপে বা অন্য কোনও বিষয় যা নিয়ে আমাদের চিন্তিত হতে হবে, উদাহরণস্বরূপ, যদি আমাদের প্রদত্ত ভাষায় ভাল টাইপ সিস্টেম না থাকে?

উত্তর:


8

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

এখানে দেখুন

সাধারণ প্রোগ্রামিং ভাষায় প্রকারগুলি আরও সীমাবদ্ধ থাকে তবে মেটা তত্ত্বটি একই is

রাসেলের প্যারাডক্সের অনুরূপ কিছু নির্ভরশীল ধরণের তত্ত্বের একটি প্রধান সমস্যা। বিশেষত, থাকার

Type : Type

সাধারণত দ্বন্দ্ব বাড়ে। কোক এবং অনুরূপ কাজ মহাবিশ্বে বাসা বাঁধে

Type_0 : Type_1

তবে কক-এ ডিফল্টরূপে এই সংখ্যাগুলি অন্তর্ভুক্ত থাকে কারণ তারা সাধারণত প্রোগ্রামারটির পক্ষে গুরুত্বপূর্ণ নয়।

কিছু সিস্টেমে (আগদা, ইদ্রিস) টাইপ রুল টাইপ করে একটি সংকলন পতাকার মাধ্যমে সক্ষম করা হয়। এটি লজিকগুলিকে বেমানান করে তোলে, তবে প্রায়শই অনুসন্ধানী প্রোগ্রামিং / সহজতর করে তোলে।

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


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

3
কিছু সরঞ্জাম আছে। সি এর জন্য কয়েকটি, জাভার পক্ষে এবং কয়েকটি অ্যাডা for উদাহরণস্বরূপ দেখুন: কেন (জাভা, সি, অ্যাডা), ক্রাকাতোয়া (জাভা), বা স্পার্ক (খুব ভাল সরঞ্জামাদি সহ অ্যাডা সাবসেট)। সি ++ এর জন্য যদিও এত বেশি নয়। আপনি ওয়াইএনট (কোক ডিএসএল) এও আগ্রহী হতে পারেন।
ফিলিপ জেএফ

3

আপনি রাসেলের অনুপ্রেরণার কথা ঠিক বলেছেন। তাঁর প্যারাডক্সটি এমন সমস্ত তত্ত্বকে জর্জরিত করে যা সীমাহীন বোধগম্যতার অক্ষরেখাকে স্বীকার করে যে: কোনও প্রস্তাবিত ফাংশন একটি সেট নির্ধারণ করে, সেই সমস্ত সত্তা যা এই কার্যটি সন্তুষ্ট করে। তত্ত্ব মধ্যে বা সেট আছে যে ত্রুটি ক্যান্টর এর সরল সেট তত্ত্ব ও এর Frege সিস্টেম ছিল উপর ভিত্তি করে Grundgesetze (বিশেষভাবে: সবর্জনবিদিত 5)।

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

আপডেট : আপনার প্রশ্নের আসল উত্তরের জন্য ফিলিপের প্রতিক্রিয়া দেখুন।


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

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

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

1
@Frank প্রতিটি সময় আমি স্ট্যাটিক ধরনের (বেশিরভাগই রুবি) ছাড়া একটি ভাষা ব্যবহার আমি ঘৃণা , অভিজ্ঞতা, কারণ আমি ঘৃণা পরিহার্য রানটাইম ত্রুটি। সুতরাং, এটি বেশিরভাগ স্বাদের বিষয় বলে মনে হয়। আমি সম্মত যে শক্তিশালী টাইপ অনুমান আপনাকে উভয় বিশ্বের সেরা দিতে পারে। কোনটি সম্ভবত, কেন আমি স্কালাকে এত পছন্দ করি।
রাফেল

আমি নিশ্চিত নই যে "স্বয়ংক্রিয়ভাবে" প্রকার না রাখলে রানটাইম ত্রুটি বাড়ে, যেমন আপনি মনে করছেন :-) পাইথনে আমার কখনও সমস্যা হয়নি a
ফ্রাঙ্ক

3

আপনি যেহেতু পাইথন উল্লেখ করেছেন প্রশ্নটি নিখুঁতভাবে টাইপ-তাত্ত্বিক নয়। তাই আমি ধরণের বিষয়ে আরও বিস্তৃত দৃষ্টিভঙ্গি দেওয়ার চেষ্টা করি। প্রকারভেদ বিভিন্ন লোকের কাছে আলাদা জিনিস। আমি কমপক্ষে ৫ টি স্বতন্ত্র (তবে সম্পর্কিত) ধরণের ধারণাগুলি সংগ্রহ করেছি:

  1. প্রকার সিস্টেমগুলি লজিক্যাল সিস্টেম এবং তত্ত্বগুলি সেট করে।

  2. একটি টাইপ সিস্টেম প্রতিটি গণিত মানের সাথে একটি প্রকারকে যুক্ত করে। এই মানগুলির প্রবাহ পরীক্ষা করে একটি টাইপ সিস্টেম প্রমাণ করার বা চেষ্টা করে যে কোনও ধরণের ত্রুটি ঘটতে পারে না।

  3. প্রকারটি হ'ল বিভিন্ন ধরণের ডেটাগুলির মধ্যে একটিকে চিহ্নিত করে এমন শ্রেণিবদ্ধকরণ, যেমন বাস্তব-মূল্যবান, পূর্ণসংখ্যা বা বুলিয়ান, যা এই ধরণের জন্য সম্ভাব্য মানগুলি নির্ধারণ করে; যে ধরণের মানগুলিতে কাজ করা যায়; তথ্য অর্থ; এবং যে ধরণের মানগুলি সংরক্ষণ করা যায়

  4. বিমূর্ত ডেটা প্রকারগুলি উচ্চ স্তরের ভাষাগুলিতে ডেটা বিমূর্তনের অনুমতি দেয়। এডিটিগুলি প্রায়শই মডিউল হিসাবে প্রয়োগ করা হয়: মডিউলটির ইন্টারফেস এডিটি অপারেশনগুলির সাথে সম্পর্কিত এমন প্রক্রিয়াগুলি ঘোষণা করে। এই তথ্য গোপন করার কৌশলটি ক্লায়েন্ট প্রোগ্রামগুলিকে বিরক্ত না করে মডিউলটির প্রয়োগ পরিবর্তন করার অনুমতি দেয়।

  5. প্রোগ্রামিং ল্যাঙ্গুয়েজ বাস্তবায়ন মানগুলির ক্রিয়াকলাপের জন্য প্রয়োজনীয় মানগুলি এবং অ্যালগরিদমগুলি সঞ্চয় করার জন্য বিভিন্ন ধরণের মান ব্যবহার করে।

উদ্ধৃতিগুলি উইকিপিডিয়া থেকে এসেছে, তবে প্রয়োজনের উত্থাপনের পরে আমি আরও ভাল রেফারেন্স সরবরাহ করতে পারি।

প্রকার 1-এর উদ্ভব রসেলের কাজ থেকে হয়েছিল তবে আজ তারা কেবল প্যারাডক্স থেকে রক্ষা করছে না: হোমোপি টাইপ তত্ত্বের টাইপ করা ভাষাটি একটি আনুষ্ঠানিক, মেশিন-বোধগম্য ভাষায় গণিতকে এনকোড করার একটি নতুন উপায় এবং ভিত্তি বোঝার নতুন উপায় is গণিতের। ("পুরানো" উপায়টি অ্যাক্সিয়োমেটিক সেট তত্ত্বটি ব্যবহার করে এনকোডিং করছে)।

বিভিন্ন বিভিন্ন প্রয়োজন থেকে প্রোগ্রামিংয়ে 2-5 প্রকারের উদ্ভব হয়: বাগগুলি এড়ানোর জন্য, ডেটা সফটওয়্যার ডিজাইনার এবং প্রোগ্রামারদের সাথে কাজ করে শ্রেণিবদ্ধ করা, বৃহত সিস্টেমগুলি ডিজাইন করা এবং প্রোগ্রামিং ভাষার দক্ষতা যথাক্রমে প্রয়োগ করা।

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

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

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

তবে, বাগ থেকে হ্যাস্কেল প্রোগ্রামগুলি রক্ষার জন্য একটি তাত্ত্বিক বাহন হিসাবে, এটি বেশ ভালভাবে কাজ করে। এমনকি আপনি নির্দিষ্ট বৈশিষ্ট্য এবং তাদের প্রমাণগুলি এনকোড করতে প্রকারগুলি ব্যবহার করতে পারেন তবে সমস্ত বৈশিষ্ট্য এনকোড করা যায় না এবং প্রোগ্রামার এখনও নিরুৎসাহিত নোংরা হ্যাক ব্যবহার করলে প্রমাণিত বৈশিষ্ট্যগুলি লঙ্ঘন করতে পারে।

স্কেলার টাইপ সিস্টেমটি রাসেলের কাজ এবং আগদার নিখুঁত প্রুফ ভাষা থেকে আরও দূরে, তবে এখনও রাসেলের কাজের মূল রয়েছে।

শিল্প ভাষার বৈশিষ্ট্য যা প্রকারের প্রকারভেদগুলির জন্য প্রকারের সিস্টেমগুলি ডিজাইন করা হয়নি, সেখানে অনেকগুলি পদ্ধতি এবং সিস্টেম রয়েছে।

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

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