আগের পর্বে আমরা গঠনমূলক যুক্তিবিদ্যা বা constructive logic-এর মূল কাঠামোটি দেখেছি। আমরা দেখেছি, কোনো দাবি খণ্ডন করা অসম্ভব (¬¬A) হওয়া মানেই সেই দাবিটির সরাসরি প্রমাণ (A) হাতে পাওয়া নয়। আর পর্বের শেষে আমরা প্রমাণ করেছিলাম যে সাধারণ নীতি হিসেবে Double-Negation Elimination (DNE: ¬¬A → A) এবং Law of Excluded Middle (LEM: A ∨ ¬A) একে অপরের সমতুল্য।
এই শেষ পর্বে আমরা দুটি প্রশ্নের উত্তর খুঁজব। প্রথমত, সত্যমানের বদলে প্রমাণের এই গঠনমূলক নিয়মগুলো দিয়ে প্রথম পর্বের সেই স্পাইডার-ম্যান মিমটিকে (যেখানে A iff B এবং XNOR গেটকে এক বলা হয়েছিল) পরীক্ষা করলে কী পাওয়া যায়? দ্বিতীয়ত, ক্লাসিক্যাল লজিকের LEM বা DNE বাদ দিলেই কি ‘মিথ্যাবাদীর প্যারাডক্স’-এর মতো জটিল অসঙ্গতি থেকে মুক্তি পাওয়া সম্ভব, নাকি এর সমাধান লুকিয়ে আছে অন্য কোথাও?
প্রথম পর্বের শেষে স্পাইডার-ম্যানের মিমে আমরা দেখেছিলাম, ক্লাসিক্যাল লজিকে A ↔ B (A if and only if B) এবং XNOR(A,B) লজিক গেটকে হুবহু এক জিনিস বলা হচ্ছে, আর নিচে লেখা ছিল: Constructivists hate this meme; ক্লাসিক্যাল সত্যসারণিতে দুটোই এক, কারণ যখন A ও B দুটোর মানই 1 (সত্য) অথবা দুটোর মানই 0 (মিথ্যা), তখনই কেবল এরা সত্য হয়। কিন্তু প্রমাণের আদালত থেকে তাকালে একই কথাকে তিনভাবে পড়া যায়, এবং তাদের শক্তির জায়গা আলাদা।
প্রথম পাঠটিকে আমরা বলি Matching case বা সরাসরি মিল দেখানো (M):
এটি সবচেয়ে কঠোর দাবি। এটি বলছে, হয় আপনাকে A এবং B দুটোরই প্রমাণ হাতে তুলে দিতে হবে (A ∧ B), নয়তো দুটোরই খণ্ডন হাতে তুলে দিতে হবে (¬A ∧ ¬B)। শুধু ‘দুটোর অবস্থা একই’ বললে চলবে না, ঠিক কোনভাবে মিলছে তার প্রমাণ দিতে হবে।
একটি উদাহরণ নেওয়া যাক। ধরি, n একটি পূর্ণসংখ্যা এবং:
A := ‘n জোড়’, B := ‘n + 2 জোড়’
যদি n = 4 দেওয়া থাকে, তবে আমরা 4 = 2 × 2 এবং 6 = 2 × 3 দেখিয়ে প্রথম ঘরটি (A ∧ B) প্রমাণ করতে পারি। আবার n = 3 দেওয়া থাকলে 3 ও 5 কোনোটিই যে জোড় নয়, তা দেখিয়ে দ্বিতীয় ঘরটি (¬A ∧ ¬B) প্রমাণ করতে পারি। দুই ক্ষেত্রেই M-এর একটি নির্দিষ্ট দিক পাওয়া গেল।
দ্বিতীয় পাঠটি হলো সাধারণ Biconditional বা দ্বিমুখী শর্ত (E):
এখানে কিন্তু আমাদের কাছে জানতে চাওয়া হচ্ছে না A ও B এই মুহূর্তে সত্য নাকি মিথ্যা। কেবল দুটি রূপান্তর পদ্ধতি চাওয়া হচ্ছে: একটি পদ্ধতি A-এর প্রমাণ পেলে সেটিকে B-এর প্রমাণে বদলে দেবে (A → B), আর অন্যটি B-এর প্রমাণ পেলে সেটিকে A-এর প্রমাণে বদলে দেবে (B → A)।
আমাদের জোড় সংখ্যার উদাহরণে প্রথম পদ্ধতিটি হলো: n = 2k হলে n + 2 = 2(k + 1)
আর দ্বিতীয় পদ্ধতিটি হলো: n + 2 = 2m হলে n = 2(m − 1)
k ও m পূর্ণসংখ্যা হলে k + 1 এবং m − 1-ও পূর্ণসংখ্যা। তাই উভয় পদ্ধতিই কাজ করে। খেয়াল করুন, এই দুটি বীজগাণিতিক নিয়ম তৈরি করতে আমাদের আগে থেকে জানার কোনো দরকারই পড়েনি n সংখ্যাটি আসলে জোড় নাকি বিজোড়!
তবে এখান থেকে বলা যাবে না যে n-এর মান দেওয়া নেই বলে এই উদাহরণে M প্রমাণ করা যায় না। পূর্ণসংখ্যার জোড়-বিজোড় নির্ণয়ের পদ্ধতি আমাদের জানা আছে। যেকোনো n-কে 2 দিয়ে ভাগ করে ভাগশেষ পরীক্ষা করা যায়, তাই সেই পদ্ধতি ব্যবহার করে এই বিশেষ উদাহরণে M-ও constructively প্রমাণ করা সম্ভব। পার্থক্য হলো, E-এর জন্য যে দুটি রূপান্তর নিয়ম আমরা দিলাম, সেগুলোতে ওই ভাগশেষ পরীক্ষার (case distinction) দরকারই হয়নি।
তৃতীয় পাঠটি আসে XNOR-কে আক্ষরিক অর্থে ‘NOT XOR’ (অর্থাৎ অমিল হওয়া অসম্ভব) হিসেবে পড়লে (N):
ভেতরের (A ∧ ¬B) ∨ (¬A ∧ B) অংশটুকু হলো XOR, যা বলছে একটি সত্য এবং অন্যটি মিথ্যা (অমিল বা mismatch)। তার সামনে একটি ‘¬’ বসিয়ে N বলছে: একটিকে প্রতিষ্ঠা করে অন্যটিকে খণ্ডন করা যাবে না। অর্থাৎ দুই রকম অমিলই নিষিদ্ধ; কেউ যদি বলে ‘A সত্য কিন্তু B মিথ্যা’ অথবা ‘A মিথ্যা কিন্তু B সত্য’, তবে সেখানে অসঙ্গতি (⊥) তৈরি হবে।
গঠনমূলক যুক্তিবিদ্যায় এই তিনটি দাবির সম্পর্ক হলো একমুখী সিঁড়ির মতো:
কেন আমরা M থেকে E এবং E থেকে N-এ সহজেই নামতে পারি?
- M থেকে E: যদি আমাদের হাতে M থাকে, তার মানে হয় আমাদের কাছে A ও B দুটোরই প্রমাণ আছে, নয়তো দুটোরই খণ্ডন (¬A ও ¬B) আছে। প্রথম ক্ষেত্রে যেকোনো দিকে রূপান্তর করা খুবই সহজ, কারণ দুটোর প্রমাণই আমাদের হাতে আছে। আর দ্বিতীয় ক্ষেত্রে (যখন ¬A ও ¬B আমাদের হাতে আছে), কেউ যদি A-এর প্রমাণ দেয় তবে তা ¬A-এর সাথে মিলে ⊥ তৈরি করবে, এবং আগের পর্বে দেখা ex falso (⊥ → B) নিয়মে আমরা সাথে সাথে B পেয়ে যাব। একইভাবে B দিলে A পাওয়া যাবে। ফলে দুই ক্ষেত্রেই E প্রতিষ্ঠিত হয়।
- E থেকে N: ধরা যাক, আমাদের হাতে দুদিকে রূপান্তরের নিয়ম (E) আছে, আর কেউ এসে A ∧ ¬B দিয়ে একটি অমিল (mismatch) দাবি করল। আমরা তখন E-এর ভেতরে থাকা A → B নিয়মটি ব্যবহার করে A থেকে B তৈরি করে ফেলব। সেই B এবং তার দাবি করা ¬B মিলে তৈরি হবে অসঙ্গতি (⊥)। একইভাবে কেউ ¬A ∧ B নিয়ে এলে B → A ব্যবহার করে অসঙ্গতি পাওয়া যাবে। ফলে অমিলের পুরো দাবিটিই খণ্ডিত হলো, এবং আমরা N পেলাম।
এখানে M-কে সবচেয়ে শক্তিশালী আর N-কে তুলনামূলক দুর্বল বলা হচ্ছে প্রমাণের কাছে আমরা কতটা তথ্য দাবি করছি, সেই অর্থে। কোন প্রমাণটি করতে কম্পিউটারের কত সময় লাগবে, এখানে তার তুলনা করা হচ্ছে না।
উল্টো দিকগুলো কেন সাধারণভাবে চলে না?
সিঁড়ি বেয়ে নিচে নামা গেলেও উল্টো দিকে ওঠা (অর্থাৎ যেকোনো প্রস্তাবনার জন্য E থেকে M, কিংবা N থেকে E-তে যাওয়া) কেন সাধারণ constructive নিয়মে সম্ভব নয়? একটি নির্দিষ্ট উদাহরণ বসিয়ে পরীক্ষা করলেই বিষয়টি পরিষ্কার হয়ে যাবে।
প্রথমে দেখি, E(A,B) থেকে কেন সরাসরি M(A,B) পাওয়া যায় না।
ধরা যাক, A হলো ‘শুভ ঢাকায় থাকেন’, আর B-এর জায়গাতেও আমরা একই বাক্য A বসালাম। তাহলে E(A,A) মানে হলো: (A → A) ∧ (A → A)। বাংলায় বললে, ‘যদি শুভ ঢাকায় থাকেন তবে শুভ ঢাকায় থাকেন’। এটি প্রমাণ করতে আমাদের শুভর বর্তমান অবস্থান জানার কোনো দরকার নেই; A → A-এর দুটি কপি বসিয়ে দিলেই হলো।
কিন্তু এবার M(A,A) কী দাবি করে দেখি:
একই বাক্য দুবার না লিখে সংক্ষেপে লিখলে এটি দাঁড়ায়: A ∨ ¬A
অর্থাৎ, M(A,A) দাবি করছে আপনাকে এখনই নির্দিষ্ট করে বলতে হবে ‘হয় শুভ ঢাকায় থাকেন, নয়তো শুভ ঢাকায় থাকেন না’! এটি তো সরাসরি Law of Excluded Middle (LEM)। কাজেই যেকোনো A ও B-এর জন্য দ্বিমুখী শর্ত E থেকে M তৈরি করার সাধারণ নিয়ম থাকলে, সেখানে B = A বসিয়ে দিলেই আমরা LEM পেয়ে যাই। (আবার হাতে LEM থাকলে A অথবা ¬A ধরে রূপান্তর নিয়ম ব্যবহার করে E থেকে M বানানোও যায়। তাই E থেকে M-এ যাওয়ার সাধারণ নিয়মটি LEM-এর সমতুল্য।)
এবার দেখি দ্বিতীয় উল্টো ধাপটি: অমিল নিষিদ্ধ করা N(A,B) থেকে কেন দ্বিমুখী শর্ত E(A,B) পাওয়া যায় না?
এটি বোঝার জন্য আমরা B-এর জায়গায় এমন একটি বাক্য বসাব যা সবসময় সত্য এবং যার প্রমাণ আমাদের হাতে আগে থেকেই আছে। লজিকে এমন প্রমাণিত সত্য বাক্যকে ⊤ (top বা verum) প্রতীক দিয়ে লেখা হয়। উদাহরণ হিসেবে ধরি:
A := ‘শুভ ঢাকায় থাকেন’
⊤ := ‘২ একটি জোড় সংখ্যা’ (যার প্রমাণ আমাদের জানা আছে)।
এখন এই দুটি বাক্যের জন্য E(A,⊤) কী দেয় দেখি:
E(A,⊤) মানে হলো (A → ⊤) ∧ (⊤ → A)। প্রথম অংশটি (A → ⊤) পাওয়া সহজ, কিন্তু দ্বিতীয় অংশটি বলছে: ‘যদি ২ একটি জোড় সংখ্যা হয়, তবে শুভ ঢাকায় থাকেন’ (⊤ → A)। যেহেতু ২ যে জোড় সংখ্যা তার প্রমাণ আমাদের হাতেই আছে, তাই এই নিয়মটিতে সেই জানা প্রমাণটি বসালেই সরাসরি বেরিয়ে আসবে A (‘শুভ ঢাকায় থাকেন’)! উল্টো দিকে A দেওয়া থাকলেও দুটি তীরচিহ্ন সহজেই তৈরি করা যায়। তার মানে দাঁড়াল: E(A,⊤) ↔ A
কিন্তু একই বাক্য দুটির জন্য N(A,⊤) কী বলে?
N(A,⊤) কেবল বলে যে ‘শুভ ঢাকায় থাকেন’ (A) এবং ‘২ একটি জোড় সংখ্যা’ (⊤)-এর মধ্যে কোনো অমিল হতে পারবে না। অমিল হতে পারে দুইভাবে:
প্রথম অমিল: ‘শুভ ঢাকায় থাকেন, কিন্তু ২ জোড় সংখ্যা নয়’ (A ∧ ¬⊤)। যেহেতু ২ জোড় সংখ্যা, তাই এই অংশটি এমনিতেই অসম্ভব।
দ্বিতীয় অমিল: ‘২ একটি জোড় সংখ্যা, কিন্তু শুভ ঢাকায় থাকেন না’ (¬A ∧ ⊤)। যেহেতু ‘২ একটি জোড় সংখ্যা’ অংশটুকু সত্য, তাই এই দ্বিতীয় অমিলটি পাওয়া আর কেবল ‘শুভ ঢাকায় থাকেন না’ (¬A) পাওয়া সমতুল্য।
ফলে N(A,⊤) যখন এই অমিলটিকে খণ্ডন করে, তখন সে আসলে কেবল ‘শুভ ঢাকায় থাকেন না’ (¬A) দাবিটিকেই খণ্ডন করছে! আর ¬A-কে খণ্ডন করার অর্থ হলো ¬¬A (‘শুভ যে ঢাকায় থাকেন না, তা অসম্ভব’)। সমীকরণে লিখলে:
কাজেই রহস্য পরিষ্কার হয়ে গেল! B = ⊤ বসালে দেখা যাচ্ছে, N আমাদের দেয় কেবল খণ্ডনের খণ্ডন (¬¬A), অথচ E আমাদের দেয় সরাসরি প্রমাণ (A)। তাই যেকোনো A ও B-এর জন্য N থেকে E-তে যাওয়ার সাধারণ নিয়ম থাকলে, সেখানে B = ⊤ বসিয়ে আমরা ¬¬A থেকে সরাসরি A পেয়ে যাব, যা আসলে DNE! (আবার হাতে DNE থাকলে অমিল খণ্ডন করে ¬¬B ও ¬¬A থেকে E তৈরি করা যায়। তাই N থেকে E-তে যাওয়ার সাধারণ নিয়মটি DNE-এর সমতুল্য।)
প্রথম পর্বের স্পাইডার-ম্যান মিমটিতে ঠিক এই কারণেই constructivist-দের আপত্তির কথা বলা হয়েছিল। কম্পিউটারের সাধারণ লজিক গেটে যখন নির্দিষ্ট 0 বা 1 বিট পাঠাই, কিংবা পূর্ণসংখ্যার জোড়-বিজোড় পরীক্ষা করি, তখন উত্তর আগে থেকেই নির্ধারণযোগ্য বলে M, E এবং N মিলে যায়। কিন্তু যেকোনো গাণিতিক প্রস্তাবনার প্রমাণের ক্ষেত্রে এই তিনটিকে এক করে দেখার অর্থ হলো চুপিসারে মাঝখানে DNE এবং LEM ঢুকিয়ে দেওয়া।
Excluded Middle বাদ দিলেই কি মিথ্যাবাদীর প্যারাডক্স মিটে যায়?
এতক্ষণ আমরা দেখলাম, কোন নিয়ম ব্যবহার করছি তার ওপর প্রমাণের ফল বদলে যায়, এবং ক্লাসিক্যাল লজিকের অতিরিক্ত নিয়মগুলো (LEM ও DNE) বাদ দিলে অনেক আপাত-অদ্ভুত দাবির পেছনের ফাঁকগুলো ধরা পড়ে। তাহলে খুব স্বাভাবিকভাবেই প্রশ্ন জাগতে পারে, ক্লাসিক্যাল লজিকের বিখ্যাত কিছু প্যারাডক্সও কি শুধু LEM বাদ দিলেই চলে যাবে?
মিথ্যাবাদীর প্যারাডক্স বা Liar paradox দিয়ে ব্যাপারটি পরীক্ষা করে দেখা যাক। প্যারাডক্সের বাক্যটি হলো L:
L: ‘এই বাক্যটি সত্য নয়।’
সাধারণ আলোচনায় আমরা প্রথমে L-কে সত্য ধরে দেখি, তারপর মিথ্যা ধরে দেখি, এবং দুই দিকেই সমস্যা পাই। এই উপস্থাপন দেখে মনে হতে পারে, শুরুতে L ∨ ¬L (অর্থাৎ LEM) ধরে বাক্যটিকে সত্য বা মিথ্যার যেকোনো একটি ঘরে ফেলতে যাওয়াটিই বুঝি সমস্যার মূল কারণ! তাহলে হয়তো LEM সরিয়ে দিলেই এই প্যারাডক্স থেকে বাঁচা যাবে। কিন্তু আশ্চর্যজনক বিষয় হলো, নিচের সাধারণ অনুমানগুলো রেখে দিলে কোনো LEM বা DNE ছাড়াই, খাঁটি constructive নিয়মেই অসঙ্গতি (⊥) তৈরি হয়।
কীভাবে তা ঘটে, অনুমানগুলো আগে পরিষ্কার করে ধাপে ধাপে দেখা যাক।
কোনো বাক্য S সত্য, এই কথাটিকে প্রকাশ করার জন্য আমরা লিখি T(⌜S⌝)। এখানে ⌜S⌝ হলো বাক্যটির নাম বা উদ্ধৃতি, আর S হলো বাক্যটি নিজে। যেমন:
S := ‘ঢাকা বাংলাদেশের রাজধানী’
T(⌜S⌝) := “‘ঢাকা বাংলাদেশের রাজধানী’ বাক্যটি সত্য”
সাধারণ ক্ষেত্রে এই দুটি কথা একই দাবি করে। তাই যেকোনো বাক্য S-এর জন্য এই সাধারণ সত্যনীতিটিকে (Truth rule) আমরা দ্বিমুখী শর্ত হিসেবে লিখতে চাই:
এবার ধরা যাক, আমাদের ভাষা নিজের সত্যতা সম্পর্কে কথা বলার মতো এমন একটি বাক্য L গঠন করতে দেয়, যার বক্তব্যই হলো “‘L’ বাক্যটি সত্য নয়”। ফলে সংজ্ঞা অনুযায়ী আমরা পাই প্রথম অনুমান:
আর আমাদের সাধারণ সত্যনীতিটি যদি কোনো বাধা বা শর্ত ছাড়াই L বাক্যটির ক্ষেত্রেও প্রয়োগ করতে দিই, তবে S-এর জায়গায় L বসিয়ে পাই দ্বিতীয় অনুমান:
এবার ১ ও ২ নম্বর অনুমান দুটির দিকে তাকান। যেহেতু ২ নম্বর অনুমান অনুযায়ী T(⌜L⌝) এবং L পরস্পর থেকে পাওয়া যায়, তাই একটিকে খণ্ডন করা আর অন্যটিকে খণ্ডন করাও সমতুল্য। ফলে এই দুই অনুমান মিলে আমাদের দেয়:
অর্থাৎ, L দাবি করা এবং সেটির খণ্ডন (¬L) দাবি করা পরস্পর সমতুল্য হয়ে গেল! আগের E(A,B)-এর মতোই এই দ্বিমুখী শর্তটি আমাদের দুটি রূপান্তর নিয়ম দিচ্ছে:
প্রথম নিয়ম: L → ¬L
দ্বিতীয় নিয়ম: ¬L → L
এবার দেখুন, কোনো LEM বা DNE ব্যবহার না করে শুধু এই দুটি নিয়ম কীভাবে আমাদের অসঙ্গতির দেয়ালে (⊥) নিয়ে যায়:
ধাপ ১ (¬L প্রমাণ করা):
প্রথমে আমরা সাময়িকভাবে ধরে নিই L সত্য।
আমাদের প্রথম নিয়মটিতে (L → ¬L) এই L বসালে আমরা পাই ¬L।
ফলে একই সাময়িক অনুমান থেকে আমরা L এবং ¬L, দুটিই পেয়ে গেলাম। যেহেতু ¬L মানে (L → ⊥), তাই দুটো মিলে তৈরি হলো অসঙ্গতি বা ⊥; এখন খেয়াল করুন: L ধরে নিয়ে অসঙ্গতি (⊥) পাওয়া গেছে বলে negation-এর সংজ্ঞা (L → ⊥) অনুসারেই আমাদের প্রমাণ হয়ে গেল:
এখানে কিন্তু আমরা কোনো ডাবল নেগেশন (¬¬L) বাদ দিইনি, কিংবা শুরুতে L ∨ ¬L ধরে ভাগও হইনি। ঠিক যেমন ৩ জোড় ধরে নিয়ে ⊥ পেয়ে আমরা প্রমাণ করেছিলাম ‘৩ জোড় নয়’, এখানেও হুবহু একইভাবে সাময়িক অনুমান থেকে অসঙ্গতি দেখিয়ে বৈধভাবে ¬L প্রতিষ্ঠা করেছি।
ধাপ ২ (L প্রমাণ করা):
ধাপ ১ শেষে আমাদের হাতে এখন ¬L-এর একটি সম্পূর্ণ বৈধ প্রমাণ আছে। এবার এইমাত্র পাওয়া ¬L প্রমাণটি আমরা আমাদের দ্বিতীয় রূপান্তর নিয়মে (¬L → L) বসাই। সেখান থেকে সরাসরি বেরিয়ে আসে:
ধাপ ৩ (চূড়ান্ত অসঙ্গতি):
কিন্তু ধাপ ১ থেকে ¬L তো আগে থেকেই আমাদের হাতে আছে! ফলে এই নতুন পাওয়া L এবং আগের ¬L একসাথে মিলে কোনো সাময়িক অনুমান ছাড়াই তৈরি করল চূড়ান্ত অসঙ্গতি (⊥)।
আগের পর্বের শুভ ও সারিহার উদাহরণের সাথে এই প্রমাণের পার্থক্যটি খেয়াল করার মতো। ঢাকার উদাহরণে আমরা সাময়িক অনুমানের ভেতরে পাওয়া ‘সারিহা ঢাকায় থাকেন’ তথ্যটিকে অনুমানের বাইরে নিয়ে যেতে পারিনি। এখানেও কিন্তু ধাপ ১-এ সাময়িকভাবে ধরা L-কে আমরা বাইরে আনিনি। বরং সেই অনুমান থেকে অসঙ্গতি দেখিয়ে নিয়ম মেনেই বাইরে ¬L তৈরি করেছি। তারপর শুরুতে দেওয়া আলাদা দ্বিতীয় নিয়ম (¬L → L) ব্যবহার করে সেই ¬L থেকে নতুন করে L পেয়েছি। তার মানে সমস্যাটি প্রমাণের ধাপে নয়, বরং দ্বিতীয় নিয়মসহ শুরুতে মেনে নেওয়া পুরো অনুমানসমষ্টিতে।
সত্য ও মিথ্যার সম্পর্ক এবং সমাধানের পথ কোথায়?
মিথ্যাবাদীর প্যারাডক্সের এই বিশ্লেষণ থেকে কিন্তু এমন সিদ্ধান্ত আসে না যে গঠনমূলক যুক্তিবিদ্যা নিজেই অসংগত। বরং এটি আমাদের দেখায় যে সাধারণ প্রমাণের নিয়মগুলোর সাথে ওই আত্মনির্দেশক (self-referential) বাক্য এবং বাধাহীন সত্যনীতি (unrestricted truth rule) একসঙ্গে রাখা যায় না। আবার শুধু বাক্যটি নিজের উল্লেখ করলেই যে অসঙ্গতি হবে, তাও নয়। যেমন, ‘এই বাক্যটি বাংলা ভাষায় লেখা’ বাক্যটিও নিজের কথা বলছে, কিন্তু সেটি থেকে L ↔ ¬L ধরনের দুটি পরস্পরবিরোধী রূপান্তর নিয়ম তৈরি হচ্ছে না।
ক্লাসিক্যাল লজিকে আমরা অভ্যাসবশত ধরে নিই যে ‘সত্য’ এবং ‘মিথ্যা’ যেন একে অপরের নিশ্ছিদ্র পরিপূরক (complement): কোনো বাক্য সত্য না হলে স্বয়ংক্রিয়ভাবে মিথ্যা হবে, আর মিথ্যা না হলে সত্য হবে। কিন্তু গত দুই পর্বে আমরা দেখলাম, প্রমাণের জগতে ব্যাপারটি এত সরল নয়। একদিকে যেমন কোনো দাবি খণ্ডন করা অসম্ভব (¬¬A) হলেও তার সরাসরি প্রমাণ (A) আমাদের হাতে না থাকতে পারে, অন্যদিকে তেমনি ভাষায় বাধাহীনভাবে নিজের সত্যতা অস্বীকার করার সুযোগ দিলে একই বাক্য প্রমাণের নিয়মেই সত্য ও মিথ্যার দুই ঘরে একসাথে ঢুকে গিয়ে অসঙ্গতি (⊥) তৈরি করতে পারে।
তাহলে এই প্যারাডক্স থেকে বাঁচার উপায় কী? মানুষের তৈরি যুক্তিবিদ্যা কি এখানে এসে থমকে গেছে?
একেবারেই না। বরং এই অসঙ্গতিগুলোই গণিতবিদ এবং কম্পিউটার বিজ্ঞানীদের শিখিয়েছে কীভাবে আমাদের যৌক্তিক কাঠামোকে আরও নিশ্ছিদ্র করতে হয়। মিথ্যাবাদীর প্যারাডক্সের মূল ফাঁদটি তৈরি হয়েছিল কারণ আমরা যেকোনো বাক্যকে কোনো স্তরভেদ ছাড়াই নিজের সত্যতা নিয়ে কথা বলতে দিয়েছি এবং একই স্তরে সত্যনীতি প্রয়োগ করেছি।
বিংশ শতাব্দীতে আলফ্রেড টারস্কি (Alfred Tarski) দেখান যে, এই ফাঁদ এড়াতে হলে ভাষাকে স্তরে স্তরে ভাগ করতে হবে: যে ভাষায় আমরা কথা বলছি (object language), সেই ভাষার বাক্যগুলোর সত্যতা বিচার করতে হবে তার চেয়ে এক ধাপ উপরের ভাষা (metalanguage) দিয়ে। আর আধুনিক কম্পিউটার বিজ্ঞান ও গণিতে এই স্তরভেদের ধারণাটিকে নিখুঁত রূপ দেওয়া হয়েছে ‘Type Theory’ বা টাইপ তত্ত্বের মাধ্যমে।
বর্তমানে আমরা গণিতের প্রমাণ যাচাই করার জন্য যে আধুনিক প্রুফ অ্যাসিস্ট্যান্ট (Proof Assistant) বা সফটওয়্যারগুলো ব্যবহার করি, যেমন Lean, সেগুলো এই টাইপ থিওরির ওপরই দাঁড়িয়ে আছে। Lean কীভাবে আমাদের গত চার পর্বের সমস্যাগুলোকে একসাথে সমাধান করে, তা দেখা যাক:
- প্যারাডক্স প্রতিরোধ: Lean-এ প্রতিটি গাণিতিক বস্তু, প্রস্তাবনা এবং প্রমাণের একটি সুনির্দিষ্ট ‘Type’ এবং স্তর (Universe level) থাকে। এর ব্যাকরণই এমনভাবে তৈরি যে আপনি সেখানে L ↔ ¬L ধরনের বাধাহীন আত্মনির্দেশক সংজ্ঞা লিখতেই পারবেন না; সিস্টেমের টাইপ-চেকার শুরুতেই সেটিকে অবৈধ হিসেবে আটকে দেবে। ফলে মিথ্যাবাদীর প্যারাডক্সের মতো অসঙ্গতি তৈরির পথটি গোড়াতেই বন্ধ হয়ে যায়।
- অনুমানের স্বচ্ছ হিসাব: Lean-এর নিজস্ব ভিত্তি হলো গঠনমূলক যুক্তিবিদ্যা (constructive type theory)। ফলে সেখানে কোনো গাণিতিক দাবি প্রমাণ করতে হলে ডিফল্টভাবে আদালতের সেই কঠোর গঠনমূলক নিয়ম মেনেই প্রমাণ বা সাক্ষী তৈরি করতে হয়। তবে আপনি যদি কোনো প্রমাণে ক্লাসিক্যাল লজিকের Law of Excluded Middle বা Double-Negation Elimination ব্যবহার করতে চান, Lean আপনাকে বাধা দেয় না; কেবল আলাদাভাবে ক্লাসিক্যাল স্বীকার্য (Classical.em) ডেকে নিতে বলে। এর ফলে একটি প্রমাণের ভেতর ঠিক কোথায় নির্ভেজাল গঠনমূলক যুক্তি কাজ করছে, আর ঠিক কোথায় আমরা ক্লাসিক্যাল অনুমানের সাহায্য নিচ্ছি, কম্পিউটার তার নিখুঁত হিসাব রাখে।
আমাদের এই চার পর্বের যাত্রা শুরু হয়েছিল সাধারণ শর্তবাক্য (P → Q) এবং সত্যসারণির সরল হিসাব দিয়ে। সেখান থেকে ঢাকার সেই অদ্ভুত মানুষটির উদাহরণ, ম্যাট্রিক্সের মরফিয়াসের প্রশ্ন এবং স্পাইডার-ম্যানের XNOR মিম হয়ে আমরা মিথ্যাবাদীর প্যারাডক্স পর্যন্ত এলাম। আমরা দেখলাম, গণিত বা যুক্তিবিদ্যা মানে কেবল চূড়ান্ত উত্তরটুকু ‘সত্য’ নাকি ‘মিথ্যা’ তা ঘোষণা করা নয়। বরং আমরা কোন ভাষায় কথা বলছি, শুরুতে কী কী অনুমান ধরে নিচ্ছি এবং কোন নিয়মে এক ধাপ থেকে পরের ধাপে যাচ্ছি, তার প্রতিটি সুতো আলাদা করে চিনতে পারাই যুক্তিবিদ্যার আসল উদ্দেশ্য।
যুক্তিবিদ্যার এই সিরিজটি এখানেই শেষ করছি। পুরো সিরিজ জুড়ে সাথে থাকার জন্য ধন্যবাদ। আপনাদের কোনো প্রশ্ন বা মতামত থাকলে জানাতে ভুলবেন না।
পাঠসূত্র
[১] Theorem Proving in Lean 4, Chapter 3: Propositions and Proofs. https://lean-lang.org/theorem_proving_in_lean4/Propositions-and-Proofs
[২] Logic and Proof, Chapter 5: Classical Reasoning. https://leanprover-community.github.io/logic_and_proof/classical_reasoning.html
[৩] Reinhard Kahle and Paulo Guilherme Santos, “Paradoxes, Intuitionism, and Proof-Theoretic Semantics” (2024). https://doi.org/10.1007/978-3-031-50981-0_12










মতামত জানান