কার্যকরী কোড সঠিক প্রমাণ করার জন্য সাধারণ আনুষ্ঠানিক কৌশলগুলি কী কী?


10

আমি আমার থিসিসের অংশ হিসাবে যে হাসকল প্রোগ্রামটি লিখছি তার অংশগুলির জন্য প্রমাণ সরবরাহ করতে চাই। এখনও পর্যন্ত, আমি একটি ভাল রেফারেন্স কাজ খুঁজে পেতে ব্যর্থ।

গ্রাহাম হাটনের প্রাথমিক বই প্রোগ্রামিং ইন হাস্কেল ( গুগল বুকস ) - যা আমি হাস্কেল শিখার সময় পড়ি programs প্রোগ্রাম সম্পর্কে যুক্তিযুক্ত কয়েকটি কৌশল সম্পর্কে স্পর্শ করে যেমন

  • সমীকরণ যুক্তি
  • নন-ওভারল্যাপিং নিদর্শনগুলি ব্যবহার করে
  • তালিকা আনয়ন

13 অধ্যায়ে কিন্তু এটি খুব গভীরতা নয়।

এমন কোনও বই বা নিবন্ধ আছে যা আপনি সুপারিশ করতে পারেন যা হাস্কেল, বা অন্যান্য কার্যকরী, কোডের জন্য প্রথাগত প্রমাণ কৌশলগুলির আরও বিশদ ওভারভিউ সরবরাহ করে?

উত্তর:


5

ফাংশনাল প্রোগ্রামিংয়ে ফলাফল প্রমাণের জন্য একটি ডি-ফ্যাক্টো পদ্ধতি হ'ল রিচার্ড বার্ডের গ্রুপের মাধ্যমে।

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

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


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


ধন্যবাদ! অবশ্যই, যদি আমি আরও রিসোর্সগুলি পাই তবে আমি সেগুলি আমার পোস্টে যুক্ত করার বিষয়টি নিশ্চিত করব।
এফকে 82

6

আপনি দিয়ে শুরু করতে পারেন

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

আপনি প্রোগ্রামিং ভাষা তত্ত্বের অংশগুলি এড়িয়ে যেতে (বা স্কিম) করতে পারেন এবং কেবলমাত্র উপস্থাপনা থেকে শুরু করে ইন্ডপ্রিলসিসিপাল পর্যন্ত প্রথাগত প্রমাণগুলি কীভাবে মোকাবিলা করবেন তা শিখতে পারেন। বইটি সত্যই ভাল লেখা এবং আলোকিত।

তারপরে আপনি এগিয়ে যেতে চাইবেন

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

সতর্কতার একটি নোট: ভিএফএ এখনও বিটা-রিলিজে রয়েছে!


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

সংশোধন, ধন্যবাদ। হ্যাঁ, আমি ভিএফপিআইএ পড়েছি, তবে এটি আমার পছন্দ নয়।
আন্তন ট্রুনভ

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

@ FK82 এখানে একটি হল Theorem app_assoc : ∀ l1 l2 l3 : natlist, (l1 ++ l2) ++ l3 = l1 ++ (l2 ++ l3)থেকে তালিকাসমূহ অধ্যায়। এই উদাহরণটি কি আপনার আগ্রহী জিনিসটির মতো কিছু দেখায়? এগুলি কক-এ ফাংশনাল প্রোগ্রামিং দিয়ে শুরু হয়, তবে তারপরে ক্রিয়ামূলক প্রোগ্রামগুলির বৈশিষ্ট্যগুলি সম্পর্কে যুক্তি দেখায়। প্রিফেস থেকে ইন্ডপ্রিলসিল অবধি অধ্যায়গুলি উভয়ই কভার করে, এবং আমি বলব প্রোগ্রামিং এবং যুক্তি সেখানে জড়িত।
আন্তন ট্রুনভ

1
@ এফকে ৮২ (১) আমি এই মন্তব্যের সাথে সম্পূর্ণ একমত । (২) আপনি হয়ত আর বার্ডের "থিংকিং ফাংশনালি উইথ হাস্কেল" (২০১৫) বইটি দেখতে চাইতে পারেন। বইটিতে হাস্কেল সম্পর্কে যুক্তিযুক্ত প্রচুর উদাহরণ রয়েছে। (3) এছাড়াও, একই লেখকের "মুক্তার ফাংশনাল অ্যালগোরিদম ডিজাইন" (2010) আপনার জন্য কিছুটা সহায়ক হতে পারে।
আন্তন ট্রুনভ

5

এটি প্রমাণিত হয়েছে যে খাঁটি কার্যকরী ভাষা সম্পর্কে জিনিস প্রমাণ করার জন্য প্রমাণ কৌশল এবং উদাহরণগুলির একটি দুর্দান্ত উত্স হ'ল প্রুফ অ্যাসিস্ট্যান্টগুলি যা সাধারণত তাদের স্পেসিফিকেশন ভাষার অংশ হিসাবে একটি খাঁটি কার্যকরী ভাষা অন্তর্ভুক্ত করে যার ভিত্তিতে সমঝোতার পক্ষে যুক্তি দেখা সম্ভব।

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


ধন্যবাদ! আমি আসলে হাস্কেলের কৌশলগুলির সন্ধান করছি । আমার পোস্টটি সমস্ত কার্যকরী কোড অন্তর্ভুক্ত করার জন্য সম্পাদনা করা হয়েছিল, তবে এটি আমার উদ্দেশ্যগুলির উপরে।
FK82

1
আমি বিশেষত হাস্কেল যাচাই করার জন্য ডিজাইন করা সিস্টেমগুলি সম্পর্কে সচেতন নই, তবে আমি লক্ষ করব যে 1) কোক (এবং আগদা) এর কার্যকরী মূলটি মূলত হাস্কেলের ( সম্পূর্ণ ফাংশনগুলির সীমাবদ্ধতা ব্যতীত ) এবং 2) প্রোগ্রাম যাচাই করা থেকে পৃথক হতে পারে Coq এবং Agda করা যেতে পারে নিষ্কাশিত Haskell, করতে (যদিও আমি বিশ্বাস করি Haskell, করতে নিষ্কাশন ভাল Agda, যেখানে Coq আরো Ocaml-কেন্দ্রিক হয় সমর্থিত)
কোডি

জানা ভাল! এটি তবে বোঝাবে যে আমি আমার প্রোগ্রামটি (বা সম্পর্কিত অংশগুলি) কক বা আগদায় পুনরায় লিখি। আমি মনে করি না যে এটি আমার ক্ষেত্রে যুক্তিসঙ্গত।
এফ কে 82

বেশ কয়েকটি পরীক্ষামূলক "সম্মুখ সমাপ্তি" রয়েছে যা হাস্কেলকে ইসাবেলে রূপান্তর করতে বা ইসাবেল ব্যবহার করে সরাসরি সমতা প্রমাণ করার চেষ্টা করে, তবে আমি তাদের পরিপক্কতায় খুব বেশি মজুদ রাখি না। আমি মনে করি কোডটি পুনরায় লেখার কাজটি শেষ পর্যন্ত কম কাজ হবে।
કોડি

4

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

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

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

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