এটি একটি আংশিক উত্তর: এসআইসিপি কোন ত্রুটিগুলি বা লোকেদের উল্লেখ করছে সে সম্পর্কে আমার কোনও ধারণা নেই। আমি "কেন" ভেরিয়েবলের পুনরায় নামকরণটি হ্যান্ডেল করার জন্য বেদনাদায়ক হতে পারে সে সম্পর্কে কেবল কিছু ইঙ্গিত সরবরাহ করতে পারি।
প্রথমত, এটি সংজ্ঞায়িত করা তুচ্ছ মনে হয় না। উদাহরণস্বরূপ, আমরা ইনডেক্সড অঙ্কগুলিতে বাউন্ড ভেরিয়েবলের নাম পরিবর্তন করতে পারি
∑xe=∑y(e{y/x})
যেখানে কোনও অভিব্যক্তি, এবং each প্রতিটি সাথে সিনট্যাকটিক প্রতিস্থাপনকে বোঝায় । তুচ্ছ, ঠিক?ee{y/x}xy
ঠিক আছে, যদি আমরা উপরোক্ত নিয়মটি অন্ধভাবে প্রয়োগ করি তবে আমরা পাই
∑x(x+y)=∑y(y+y)
এটা ভালো না. আমাদের " ঘটবে না " প্রয়োজনীয়তা যুক্ত করতে হবে , বা আমরা নামের সংঘর্ষ পাই।ye
এখন, এই সঠিক নামকরণ বিবেচনা করুন
∑x∑y(x+y)=∑x∑z(x+z)
আমরা নামান্তর করতে চান তাহলে মধ্যে , নিয়ম করে উপরের আমরা ডান দিকে এটা করতে পারেন, কিন্তু বাম দিকে নয়। এটি অসুবিধাগুলি, যেহেতু দু'জনেই কেবল নতুন নামকরণের মাধ্যমে পৃথক হয়, সুতরাং তাদের একই পদ্ধতিতে পরিচালনা করা উচিত।xy
এখানে একটা প্রচলিত পদ্ধতির redefining অবলম্বন হয় হিসাবে "ক্যাপচার-এড়ানো প্রতিকল্পন", এবং প্রয়োজন "শিথিল ঘটতে না " এবং পরিবর্তে ব্যবহার করুন " ঘটবে না বিনামূল্যে মধ্যে "।e{y/x}yeye
এরপরে আমরা নিখরচায় সংঘটনগুলি সংজ্ঞায়িত করি:
free(x)={x}free(e+t)=free(e)∪free(t)free(∑xe)=free(e)∖{x}
পরিশেষে, প্রতিস্থাপন এড়ানো ক্যাপচার:
- x{t/y} হয় যদি , এবং অন্যথায়।tx=yx
- (e+e′){t/y}=e{t/y}+e′{t/y} (সহজ কেস)
- (∑xe){t/y}=??
শেষ ঘটনাটি বেদনাদায়ক। যদি তবে বিকল্পটি কোনও বিকল্প নেই, যেহেতু আমরা এটি কেবল ফ্রি ভেরিয়েবলকেই প্রভাবিত করতে চাই এবং সীমাবদ্ধ। সুতরাং ফলাফলটি কেবল ।x=yx∑xe
যদি , আমরা বলতে চাই যে । এটি তবে সাধারণভাবে, যেহেতু বিনামূল্যে হয় তবে আমরা ক্যাপচার পাই।y≠x(∑xe){t/y}=∑x(e{t/y})xt
দীর্ঘশ্বাস. সুতরাং, আমরা কে "প্রথম" ভেরিয়েবল হতে দেই যা 1) নয় , 2) বিনামূল্যে নয় , এবং 3) বিনামূল্যে নয় । এখানে, "প্রথম" এর অর্থ হল আমাদের চলক নামগুলির সেটটি ভালভাবে অর্ডার করতে হবে (উদাহরণস্বরূপ নাম এবং প্রাকৃতিকগুলির মধ্যে দ্বিচার পছন্দ করে)। তারপরে, আমরা অবশেষে
।zyt∑xe(∑xe){t/y}=∑z(e{z/x}{t/y})
আমি আশা করি আমি এটা ঠিক পেয়েছি। (আমার প্রথম প্রচেষ্টাটি ভুলভাবে হয়েছিল)
কিছু লেখক আরও কেস বিবেচনা করে তবে ফলাফলটি একই সাথে "পুনর্নামকরণ পর্যন্ত"। "প্রথম" পছন্দটি উপরে বর্ণিত নয়: এই জাতীয় কোনও কাজ করবে এবং একই ফলাফলের দিকে নিয়ে যাবে (আবার নাম বদলানো পর্যন্ত)।zz
এখন, অবশেষে, আমাদের নাম পরিবর্তন করার ( রূপান্তর) এবং একটি মুক্ত ভেরিয়েবলের ক্যাপচার-এড়ানো বিকল্পের একটি সংজ্ঞা রয়েছে। উপরে, আমি অঙ্কগুলি বিবেচনা করেছি, তবে সেগুলি সমস্ত বাইন্ডারগুলিতে প্রয়োগ হয় (যেমন mb ল্যাম্বডা ক্যালকুলাসে , অনেক পিএল-তে ফাংশন সংজ্ঞা ইত্যাদি)।αλx
এখন, পিএল তত্ত্বটিতে আমরা যখন কোনও কিছু প্রমাণ করতে চাই তখন এই জটিল জটিল সংজ্ঞাটি মোকাবেলা করার কথা ভাবুন । আমরা পারতাম, কিন্তু আমরা চাই না। এটি বিরক্তিকর, ক্লান্তিকর, ত্রুটি-প্রবণ, প্রমাণকে খর্ব করে এবং পাঠককে কোনও অন্তর্দৃষ্টি দেয় না। এই কারণে, অনেক পিএল লেখক কেবল এই বিবরণটি (বা এমনকি মঞ্জুর হিসাবে গ্রহণ করে!) এড়িয়ে যান যে শর্তগুলি "পরিবর্তনশীল পুনর্নামকরণের দিকে" নেওয়া উচিত, যে সমস্ত আবদ্ধ ভেরিয়েবলগুলি যেগুলি থেকে পৃথক হওয়া প্রয়োজন তার থেকে পৃথক বলে ধরে নেওয়া হয়, যে আমরা "বেরেনড্রেগেট কনভেনশন", বা একই প্রভাবের জন্য কিছু অনুমান করি।
নির্মমভাবে সত্য বলতে, এটি প্রমাণ হিসাবে প্রতারণা করছে। আমরা "উইঙ্ক উইঙ্ক, ন্যাজ ন্যাজ, আরও কিছু বলতে পারি না!" একই চেতনায়। আমরা মূলত করুণার জন্য জিজ্ঞাসা করি এবং পাঠককে বলি: "দেখুন, এটি বিরক্তিকর, আমি এটি করতে চাই না, আপনি এটি পড়তে চান না - আমরা উভয়েই জানি যে বিশাল চেষ্টা করে আমরা এই প্রমাণটি আবার লিখতে পারি সমস্ত বিবরণ অন্তর্ভুক্ত করুন "।
প্রযুক্তিগতভাবে, একটি মিথ্যা বক্তব্য প্রমাণের জন্য এই শর্টকাটটি ব্যবহার করা সম্ভব। অভিজ্ঞ প্রুফ পর্যালোচক অবশ্য জানেন যে "নৈতিকভাবে ভাল" কী এবং নিখুঁতভাবে তৈরি করতে পারে (দুর্দান্ত প্রচেষ্টার সাথে), এবং সন্দেহজনক কী। পরবর্তীকালে এমন কিছু অন্তর্ভুক্ত থাকতে পারে যা আবদ্ধ নামের প্রকৃত পছন্দের উপর নির্ভর করে (যাতে আমরা প্রতিশ্রুতি অনুসারে "" পর্যন্ত "কাজ করি না !)। এই ক্ষেত্রে, পর্যালোচনা আরও বিশদ জানতে চাইবে, যাতে (গুলি) সে নিশ্চিত হতে পারে।