নির্ভরশীল ধরণের চেকিংটি প্রমাণ করার জন্য প্রুফ কৌশলগুলি নির্ধারণযোগ্য


10

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

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

বিশেষত, আমি নিম্নলিখিত উপর আটকে আছি:

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

আমি ভাবছি, নির্ভর করে টাইপ করা ভাষার জন্য টাইপেকিংয়ের ক্ষমতার প্রমাণের জন্য কি কারও কাছে ভাল রেফারেন্স রয়েছে? এটি যদি একটি ছোট কোর ক্যালকুলাস হয় তবে তা ঠিক। সিদ্ধান্ত গ্রহণযোগ্যতা প্রদর্শনের জন্য প্রমাণ কৌশলগুলি নিয়ে যে কোনও কিছু আলোচনা করা দুর্দান্ত।


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

7
বিধি প্রয়োগের বিষয়ে: সমস্ত পদ এবং প্রকারের বিধি প্রকার রূপান্তর ব্যতীত লক্ষ্য হ্রাস করে। সুতরাং আমাদের দ্বি-দিকনির্দেশক পদ্ধতির ব্যবহার করে ধরণের রূপান্তর নিয়ন্ত্রণ করতে হবে।
আন্দ্রেজ বাউর

উত্তর:


9

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

DΓt:ADΓA:ssutBΔDΔu:B

এই সুন্দর সত্যটি প্রমাণ করা কিছুটা কঠিন এবং একটি সুন্দর বাজে কাউন্টার-ফ্যাক্ট দ্বারা অফসেট:

ফ্যাক্ট 2: সাধারণভাবে, এবং না উপ-derivations !DD D

এটি আপনার টাইপ সিস্টেমের সঠিক সূত্রের উপর কিছুটা নির্ভর করে, তবে বাস্তবে বাস্তবায়িত বেশিরভাগ "অপারেশনাল" সিস্টেমগুলি ফ্যাক্ট 2 কে সন্তুষ্ট করে।

এর অর্থ হ'ল আপনি "উপ-শর্তগুলিতে" প্রবেশ করতে পারবেন না যখন ডেরাইভেশনগুলিকে অন্তর্ভুক্ত করে যুক্তি দিয়ে বা সিদ্ধান্তে পৌঁছাতে পারেন যে প্ররোচিত বক্তব্যটি আপনি যে শব্দটির বিষয়ে কিছু প্রমাণ করার চেষ্টা করছেন তার ধরণের সম্পর্কে সত্য।

আপাতদৃষ্টিতে নির্দোষ বিবৃতি প্রমাণ করার চেষ্টা করার সময় এই সত্যটি আপনাকে বেশ কঠোরভাবে কামড়ায়, যেমন টাইপযুক্ত রূপান্তর সহ সিস্টেমগুলি টাইপ করা রূপান্তরগুলির সাথে সমান।

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

গুরুতর কেস (এবং একমাত্র ক্ষেত্রে যা সত্যই রূপান্তর প্রয়োজন) হ'ল আবেদন:

infer(t u):
   type_t, sort_t <- infer(t)
   type_t' <- normalize(type_t)
   type_u, sort_u <- infer(u)
   type_u' <- normalize(type_u)
   if (type_t' = Pi(A, B) and type_u' = A' and alpha_equal(A, A') then
      return B, sort_t (or the appropriate sort)
   else fail

স্বাভাবিক করার জন্য প্রতিটি কল ভাল-টাইপ করা শর্তে করা হত, কারণ এটিই inferসাফল্যের জন্য আক্রমণকারী ।


যাইহোক, এটি বাস্তবায়িত fixহওয়ার সাথে সাথে কাকের সিদ্ধান্ত নেওয়ার যোগ্য টাইপ চেকিং নেই, কারণ এটি পরীক্ষা করার চেষ্টা করার আগে বিবৃতিগুলির শরীরকে স্বাভাবিক করে তোলে ।

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


আমি আপনার উত্তর খুব দরকারী খুঁজে পেয়েছি, আপনাকে ধন্যবাদ। আমার দুটি প্রশ্ন রয়েছে: 1. "অপারেশনাল সিস্টেম" এর অর্থ কী? বিকল্প কি? ২. আপনি উদাহরণের সাথে আরও স্পষ্ট করে বলতে পারেন: এর অর্থ কী (আমরা কী প্রমাণ করতে চাইছি?) "টাইপ করা রূপান্তর সহ সিস্টেমগুলি টাইপ করা রূপান্তরগুলির সাথে সমান?" ধন্যবাদ!
asukasz Lew

1
@ AsukaszLew একটি অপারেশনাল সিস্টেমের বিকল্প (যা বাস্তবে কোক বা আগদা সফ্টওয়্যার প্রয়োগ করা হয়েছে) একটি তাত্ত্বিক সিস্টেম হবে, যা মেটা-তাত্ত্বিক বৈশিষ্ট্য প্রমাণ করতে কার্যকর, তবে অনুশীলনে ব্যবহার করতে অক্ষম বা অসুবিধে হয়। একটি অপারেশনাল এবং তাত্ত্বিক সিস্টেমের সমতুল্যতা প্রমাণ করা প্রায়শই একটি সিস্টেম ডিজাইনের একটি গুরুত্বপূর্ণ অঙ্গ। : আমি এখানে এই সম্পর্কে আরো কথা cstheory.stackexchange.com/a/41457/3984
কোডি

আমি মনে করি এটি লেনার্ট অগাস্টসনের সহজ, সহজতর উল্লেখ করার মতো ! । এটি টাইপ চেকিংয়ের একটি ন্যূনতম হাস্কেল বাস্তবায়ন এবং নির্ভরশীল টাইপড ল্যাম্বদা ক্যালকুলাসের জন্য কিছু অনুমান। কোড রয়েছে যা কোডির সাথে ঘনিষ্ঠভাবে মিলছে infer(t u):; এটি খুঁজতে, " tCheck r (App f a) =" অনুসন্ধান করুন । আরও সম্পূর্ণ কিন্তু এখনও সহজ বাস্তবায়নের জন্য আপনি মর্টেরtypeWith পরীক্ষা করতে পারেন ।
asukasz Lew

1
@ ŁukaszLew দ্য বনাম untyped রূপান্তর সমস্যা টাইপ করা একটি সুপরিচিত খোলা প্রশ্ন টাইপ তত্ত্ব 2 গঠন সম্পর্কিত, এবং বরং সম্প্রতি মুকুব করা হয়েছে: pauillac.inria.fr/~herbelin/articles/...
কোডি

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