Discrete Mathematics - 1.4 - Predicates and Quantifiers

Discrete Mathematics - 1.4 - Predicates and Quantifiers

Introduction

আমরা 1.1 থেকে 1.3 পর্যন্ত যা যা শিখেছিলাম তা একটা স্টেটমেন্ট প্রকাশের জন্য যথেষ্ট নয়। যেমন ধরেন আমরা বললাম, Every computer connected to the university network is functioning Properly. এখানে থেকে এখনও পর্যন্ত আমাদের আহরিত জ্ঞান দিয়ে আমরা কখনই বলতে পারবো না, MATH3 computer is functioning properly. কারণ এখানে MATH3 কম্পিউটার এই ইউনিভার্সিটির নেটওয়ার্কের সাথে কানেক্টেড কিনা আমরা জানিনা বা আমাদেরকে বলাও হয়নি। আমরা জানি সব কম্পিউটার ঠিকঠাকমতো চলছে। কিন্তু কোনো নির্দিষ্ট কম্পিউটারের ক্ষেত্রে আমরা কোনো সিদ্ধান্তে আসতে পারবো না। ঠিক এভাবে যদি আমরা বলি, There is a computer on the university network that is under attack by an intruder. এখানে বুঝাচ্ছে একটা কম্পিউটার আক্রান্ত হয়েছে কোনো হ্যাকার দ্বারা। কিন্তু আমরা এখান থেকে কোনো সিদ্ধান্ত নিতে পারবো না কোন কম্পিউটার আক্রান্ত হয়েছে। আমরা শুধু জানি একটা কম্পিউটার আক্রান্ত হয়েছে। কিন্তু কোনটা সেটা আমরা বলতে পারবো না। যদি এমন কোনো উপায় থাকতো যে নির্দিষ্টভাবে আমাদেরকে বলে দেয়া হচ্ছে কোন কম্পিউটার আক্রান্ত হয়েছে তাহলে আমরা সহজেই সিদ্ধান্ত নিতে পারতাম কোন কম্পিউটারের জন্য আমাদের অ্যাকশন নিতে হবে

এই আর্টিকেলে আমরা সেরকম একটা উপায় শিখবো। আমরা লজিকের একটা পাওয়ারফুল টাইপ শিখবো যাকে বলা হয় Predicate Logic। এই লজিক ব্যবহার করে আমরা আমাদের স্টেটমেন্টকে আরো নির্দিষ্ট করে বুঝতে পারবো। এই লজিক বুঝতে হলে আমাদের দুইটা টার্ম বুঝতে হবে। Predicates and Quantifiers। মূলত এই দুইটা টার্ম নিয়েই আমাদের আজকের আলোচনা। চলুন তাহলে শুরু করে দিই।

Topics we will cover in this article

  • Predicates
  • Quantifiers
    • Universal
    • Existential
  • Quantifiers over finite domains
  • Quantifiers with restricted domains
  • Precedence of quantifiers
  • Binding Variables
  • Logical equivalences involving quantifiers
  • Negating quantified expressions
  • Translating from English into logical expressions

Predicates

  • x > 3
  • x = y + 3
  • x + y = z
  • Computer x is under attack by an intruder.
  • Computer x is functioning properly.

আমরা 1.1 আর্টিকেলে বলেছিলাম এগুলো প্রোপোজিশন না। কারণ যেহেতু x, y, z এসব ভ্যারিয়েবলের মান জানি না তাই আমরা বুঝতে পারছি না এগুলো সত্যি নাকি মিথ্যা। কিন্তু আমরা এবার দেখবো এই স্টেটমেন্ট থেকে কিভাবে প্রোপোজিশন বের করে আনা যায়।

x is greater than 3 এই স্টেটমেন্টে x হলো subject এবং পরবর্তী অংশ 'is greater than 3' হলো predicate. আমরা আমাদের স্টেটমেন্টকে P(x) হিসেবে ধরে নিতে পারি যেখানে P হচ্ছে আমাদের predicate 'is greater than 3' এবং x হচ্ছে ভ্যারিয়েবল। P(x) কে আমরা Propositional Function P at x বলেও বলতে পারি। এখন যদি আমাদেরকে x এর এক বা একাধিক ভ্যালু দিয়ে দেয়া হলো, বা একটা নির্দিষ্ট রেঞ্জ বলে দেয়া হলো যে x এর ভ্যালু এই জায়গা থেকে এই জায়গার মধ্যে থাকবে, তাহলে P(x) একটা প্রোপোজিশন হয়ে যাবে এবং এর একটা Truth ভ্যালু থাকবে, কারণ আমরা x এর মান P(x) এ বসিয়ে দিলে আমরা একটা প্রোপোজিশন পেয়ে যাবো। অনেকটা ক্লাস নাইন টেনের ফাংশনের ম্যাথের মতো।

  • ধরি P(x) হলো 'x > 3'. আমাদেরকে P(4) এবং P(2) এর জন্য Truth ভ্যালু বের করতে হবে।

যেহেতু আমাদের এখানে x এর ভ্যালু দেয়া আছে আমরা Truth ভ্যালু বের করতে পারবো। প্রথম P(4) এর জন্য Truth ভ্যালু বের করবো। P(4) বলতে বুঝানো হচ্ছে x এর মান 4। তাহলে 4 > 3 true। সুতরাং P(4) true।

এবার P(2) এর ক্ষেত্রে 2 > 3 হচ্ছে ফলস। তার মানে P(2) ফলস।

ধরি A(x) হচ্ছে Computer x is under attach by an intruder এবং পুরো ক্যাম্পাসের কম্পিউটারের মধ্যে শুধু বর্তমানে CS2 এবং MATH1 কম্পিউটার আক্রান্ত হয়েছে। আমাদের বের করতে হবে A(CS1), A(CS2), A(MATH1) এর Truth ভ্যালু কি হবে।

A(CS1) এর ক্ষেত্রে যেহেতু CS1 কথা আমাদেরকে বলে দেয়া হয়নি তাই এর Truth ভ্যালু হবে ফলস।

A(CS2) এবং A(MATH1) এর ক্ষেত্রে যেহেতু বলা আছে CS2 এবং MATH1 কম্পিউটার আক্রান্ত হয়েছে তাই এরা true।

আমরা চাইলে একাধিক ভ্যারিয়েবল নিয়েও কাজ করতে পারি। এর একটা উদাহরণ নিচে দেয়া হলো।

ধরি Q(x, y) হলো x = y + 3। এখানে x, y দুইটা ভ্যারিয়েবল তাই Q(x, y) লিখতে পারি আমরা। আমাদের Q(1, 2) এবং Q(3, 0) এর Truth ভ্যালু বের করতে হবে।

Q(1, 2) এর ক্ষেত্রে স্টেটমেন্ট দাঁড়াবে 1 = 2 + 3, যেটা ফলস। সুতরাং Q(1, 2) ফলস।

Q(3, 0) এর ক্ষেত্রে স্টেটমেন্ট হচ্ছে 3 = 0 + 3, যেটা true। তাই Q(3, 0) true।

যদি R(x, y, z), x + y = z প্রকাশ করে তাহলে R(1, 2, 3) এবং R(0, 0, 1) এর Truth ভ্যালু কি হবে?

R(1, 2, 3) এর ক্ষেত্রে এই স্টেটমেন্ট দাঁড়াবে 1 + 2 = 3, যেটা true। তাই R(1, 2, 3) এর truth ভ্যালু true।

R(0, 0, 1) এর ক্ষেত্রে স্টেটমেন্ট হবে 0 + 0 = 1 যেটা ফলস। তাই R(0, 0, 1) এর Truth ভ্যালু ফলস।

Quantifiers

একটা প্রোপোজিশনাল ফাংশন থেকে প্রোপোজিশন তৈরি করার জন্য একটা গুরুত্বপুর্ণ মেথড আছে। তাকে বলা হয় Quantification। এতক্ষণ ধরে আমরা একটা নির্দিষ্ট ভ্যালু বলে দিয়েছিলাম। সেটার জন্য P(x) এর truth value বের করেছিলাম। এবার আমরা নির্দিষ্ট ভ্যালু বলে না দিয়ে একটা রেঞ্জ বলে দিবো যে x এর মান এই নির্দিষ্ট রেঞ্জ। এর মধ্যে যতো মান আছে সবগুলোর জন্য প্রোপোজিশন তৈরি করতে হবে। এর বাইরের কোনো মান নেয়া যাবে না। এই যে ভ্যারিয়েবলের রেঞ্জ, একে আমরা বলছি ডোমেইন। ইংরেজিতে all, some, many, none এবং few এসব শব্দ quantification এ ব্যবহৃত হয়। আমরা সাধারণত দুইটা quantification নিয়ে আলোচনা করবো। একটা হলো universal quantification যেটা আমাদেরকে একটা predicate ডোমেইনের সমস্ত মানের জন্য true হচ্ছে কিনা তা জানাবে এবং অন্যটা হলো existential quantification যা আমাদেরকে জানাবে একটা predicate অন্ততপক্ষে ডোমেইনের একটা মানের জন্য true হচ্ছে। লজিকের যে এরিয়া predicate and quantifiers নিয়ে আলোচনা করে তাকে বলা হয় Predicate Calculus

Universal Quantifiers

যদি একটা স্টেটমেন্টের ভ্যারিয়েবলের ডোমেইনের সকল ভ্যালুর জন্য ঐ স্টেটমেন্ট true হয় তবে তাকে বলে universal quantification। আর যে অপারেটর বা চিহ্ন সেটি প্রকাশ করে তাকে বলে universal quantifier। ধরি আমাদের বলা হলো P(x), x সকল ভ্যালুর জন্য সত্য। সেক্ষেত্রে একে লেখা যায় ∀xP(x)। এখানে ∀ কে বলা হয় universal quantifier. যদি x এর কোনো ভ্যালুর জন্য P(x) মিথ্যা হয় তবে তাকে বলা হয় ∀xP(x) এর কাউন্টার এক্সাম্পল

একটা কথা মাথায় রাখবেন। যদি কেউ বলে P(x) এর universal quantification বের করতে, তাহলে তার সাথে সাথে অবশ্যই ডোমেইন বলে দিতে হবে। যদি বলে না দেয় তাহলে আপনার উত্তর এখানে কোনো ডোমেইন দেয়া নেই তাই এটা ডিফাইন করা যাবে না।

যদি P(x) 'x + 1 > x' হয় তাহলে ∀xP(x) এর Truth ভ্যালু কতো যেখানে ডোমেইন হচ্ছে সকল বাস্তব সংখ্যা বা রিয়েল নাম্বার।

যেহেতু P(x) সকল বাস্তব সংখ্যার জন্য সত্য, তাই ∀xP(x) true। অর্থাৎ x এর মান যদি হয় ২, তাহলে ২ + ১ > ২ সত্য হবে। যদি যদি -২ হয় তবে -২ + ১ > -২ ও সত্য হবে।

∀xP(x) ফলস হবে যদি কখনও ∀xP(x) এর অন্তত একটা কাউন্টার এক্সাম্পল পাওয়া যায়। অর্থাৎ যদি ডোমেইনের যেকোনো একটা ভ্যালুর জন্য P(x) মিথ্যা হয় তবে ∀xP(x) ফলস হবে।

Q(x) হিসেবে ধরি 'x < 2'। যদি ডোমেইন সকল বাস্তব সংখ্যা হয় তবে ∀xP(x) এর Truth ভ্যালু কি?

Q(x) সকল বাস্তব সংখ্যার জন্য সত্যি হবে না। কারণ Q(1) পর্যন্ত সত্য হলেও Q(2), Q(3) এবং এরপর রো যতো ভ্যালু আসবে সবকিছুর জন্য ফলস রেজাল্ট দিবে। তাই এখানে ∀xP(x) ফলস।

∀xP(x) কি বুঝাচ্ছে, যদি N(x) হিসেবে 'Computer x is connected to the network' ধরা হয় এবং ডোমেইন হিসেবে দেয়া হয় ক্যাম্পাসের সকল কম্পিউটার?

∀xP(x) বুঝাচ্ছে ক্যাম্পাসের সকল কম্পিউটার x এর জন্য, কম্পিউটার x নেটওয়ার্কের সাথে কানেক্টেড। যদি ইংরেজিতে সাজিয়ে লিখি তাহলে এর রূপ দাঁড়াবে, 'Every computer on campus is connected to the network'।

Existential Quantifiers

এটি প্রকাশ করে আমরা এমন একটি প্রোপোজিশন তৈরি করবো যেটা true হবে যদি ডোমেইনের অন্তত একটি x এর ভ্যালুর জন্য P(x) সত্য হয়। একে ∃xP(x) হিসেবে লেখা হয় এবং ∃ কে বলা হয় এক্সিস্টেনশিয়াল কোয়ানটিফায়ার।

এক্ষেত্রেও অবশ্যই অবশ্যই ডোমেন বলে দিতে হবে।

P(x) = 'x > 3'. ∃xP(x) এর Truth ভ্যালু কি হবে যদি ডোমেইন হিসেবে সকল বাস্তব সংখ্যা ধরা হয়?

3 পর্যন্ত এটি মিথ্যা হলেও 4 থেকে বাকি সব ভ্যালুর জন্য এর জন্য এটি সত্য হবে। এক্সিস্টেনশিয়াল কোয়ান্টিফায়ারের শর্তমতে যদি একটি ভ্যালুর জন্যও P(x) সত্য হয় তবে ∃xP(x) সত্য হবে। সুতরাং এক্ষেত্রে ∃xP(x) true।

Q(x) = 'x = x + 1'. ∃xP(x) এর Truth ভ্যালু বের করুন, যেখানে ডোমেইন সকল বাস্তব সংখ্যা।

সকল বাস্তব সংখ্যার জন্যই Q(x) মিথ্যা। কারণ ২ = ২ + ১ অথবা ১০ = ১০ + ১ কখনই হতে পারে না। তাই এক্ষেত্রে ∃xP(x) ফলস।

When the quantifiers true and when false

quan.png

Quantifiers over finite domains

যখন কোয়ান্টিফায়ারের ডোমেইন finite বা সসীম হবে, তখন কোয়ান্টিফাইড স্টেটমেন্টকে আমরা প্রোপোজিশনাল লজিকের মাধ্যমে ব্যবহার করতে পারবো। যেমন যদি ডোমেইনের এলিমেন্টস x1, x2, x3, ..., xn হয় যেখানে n একটি positive integer, সেখানে আমরা ইউনিভার্সাল কোয়ান্টিফায়ার ∀xP(x) কে P(x1) ∧ P(x2) ∧ P(x3) ∧ ... ∧ P(xn) এই কনজাঙ্কশনের মাধ্যমে প্রকাশ করতে পারি। কারণ এই কনজাঙ্কশন true হবে যদি ও কেবল যদি সকল প্রোপোজিশন true হয় এবং আমাদের ∀xP(x) এর ক্ষেত্রেও শর্ত একই। তার মানে ∀xP(x) এবং P(x1) ∧ P(x2) ∧ P(x3) ∧ ... ∧ P(xn) একই।

একইভাবে ∃xP(x) কে P(x1) ∨ P(x2) ∨ P(x3) ∨ ... ∨ P(xn) এই ডিসজাঙ্কশন দিয়ে প্রকাশ করা যায়। কারণ ডিসজাঙ্কশন true হবে যদি ও কেবল যদি অন্তত একটি প্রোপোজিশন true হয় এবং ∃xP(x) এর ক্ষেত্রেও কথা একই। অতএব ∃xP(x) এবং P(x1) ∨ P(x2) ∨ P(x3) ∨ ... ∨ P(xn) একই।

আমরা দুই কোয়ান্টিফায়ারের দুইটা উদাহরণ দেখি।

What is the truth value of ∀xP(x), where P(x) is the statement “x^2 < 10” (x^2 means x to the power 2) and the domain consists of the positive integers not exceeding 4?

এখানে আমাদের প্রোপোজিশনাল লজিক কাজে লাগাতে গেলে আগে দেখতে হবে আমাদের ডোমেইনের রেঞ্জ সসীম কিনা। এখানে দেখা যাচ্ছে রেঞ্জ ৪ পর্যন্ত সকল পজিটিভ ইন্টিজার। অর্থাৎ ১ থেকে ৪ পর্যন্ত। তার মানে আমাদের রেঞ্জ সসীম বা finite। তাই আমরা এখানে প্রোপোজিশনাল লজিক কাজে লাগাতে পারবো। ∀xP(x) এর মানে যা, P(1) ∧ P(2) ∧ P(3) ∧ P(4) এর মানেও তা। এখন দেখি আমাদের কনজাঙ্কশন true হয় কিনা। দেখা যাচ্ছে P(4) এর ক্ষেত্রে x^2 এর মান হচ্ছে ১৬ যা ১০ এর চেয়ে বড় অর্থাৎ স্টেটমেন্ট ফলস। তার মানে আমাদের কনজাঙ্কশনও ফলস। যেহেতু কনজাঙ্কশন ফলস আমাদের ∀xP(x) কোয়ান্টিফায়ারও ফলস।

What is the truth value of ∃xP(x), where P(x) is the statement “x^2 > 10” (x^2 means x to the power 2) and the domain consists of the positive integers not exceeding 4?

যেহেতু আমাদের রেঞ্জ সসীম সুতরাং ∃xP(x) এর জন্য আমরা P(1) ∨ P(2) ∨ P(3) ∨ P(4) এই ডিসজাঙ্কশন ব্যবহার করতে পারি। দেখা যাচ্ছে শুধু P(4) এর ক্ষেত্রেই স্টেটমেন্ট true হচ্ছে এবং আমাদের ডিসজাঙ্কশনও true হচ্ছে যেহেতু অন্তত একটা ভ্যালু true পেয়েছি আমরা। অতএব আমাদের ∃xP(x) ও true হবে।

Connection between quantification and looping

Quantification কে আমরা loop এর সাথে মিলাতে পারি। ধরি x ভ্যারিয়েবলের জন্য ডোমেইনে n সংখ্যক অবজেক্ট রয়েছে। ∀xP(x) এর Truth ভ্যালু বের করার জন্য আমরা x এর n সংখ্যক ভ্যালুর উপর লুপ চালিয়ে দেখবো যে সকল ভ্যালুর জন্য P(x) true হয় কিনা। যদি true হয় তবে ∀xP(x) true হবে। আর যদি একটা ভ্যালুর জন্যও P(x) ফলস হয় তবে ∀xP(x) ও ফলস হবে। একইভাবে ∃xP(x) এর জন্যও আমরা লুপ চালাবো। যদি অন্তত একটা ভ্যালুর জন্যও p(x) true হয় তবে ∃xP(x) true হবে। আর যদি সকল ভ্যালুর জন্য P(x) ফলস হয় তবে ∃xP(x) ও ফলস হবে।

Quantifiers with restricted domains

এই টার্মটা একটু উদাহরণ দিয়ে বুঝাই। এমনি বুঝাতে গেলে আপনাদের মাথার উপর দিয়ে যাবে।

∀x < 0 (x^2 > 0) কী বুঝাচ্ছে যেখানে ডোমেইন সকল বাস্তব সংখ্যা।

এটা বুঝাচ্ছে সকল বাস্তব সংখ্যা x এর মান যদি ০ থেকে ছোট হয় অর্থাৎ নেগেটিভ হয় তাহলে x এর বর্গ বা স্কয়ার ০ এর চেয়ে বড় হবে। এই স্টেটমেন্টকে যদি আমরা ∀x(x < 0 → x^2 > 0) এভাবে লিখি তাহলেও একই অর্থ দাঁড়ায়। অর্থাৎ যদি আমাদের ডোমেইন রেস্ট্রিক্টেড করে দেয়া হয় তাহলে আমরা এভাবে আমাদের কোয়ান্টিফায়ারকে লিখতে পারি।

একইভাবে ∃z > 0 (z^2 = 4) কে আমরা লিখতে পারি ∃z(z > 0 ∧ z^2 = 4)।

Precedence of quantifiers

∀ এবং ∃ এর প্রেসিডেন্স সকল লজিক্যাল অপারেটরের মধ্যে উপরে থাকে।

Binding variables

যখন কোনো কোয়ান্টিফায়ার কোনো ভ্যারিয়েবলের সাথে থাকে, তখন আমরা এই ঘটনাকে বলি bound. আর যদি কোনো ভ্যারিয়েবল কোয়ান্টিফায়ার দিয়ে bound হয় না বা কোনো নির্দিষ্ট ভ্যালুর সাথে অ্যাসাইন করা হয় না অর্থাৎ x = 1 এভাবে লেখা হয় না তখন তাকে আমরা বলি free। কোনো লজিক্যাল এক্সপ্রেশনের কোনো অংশে কোয়ান্টিফায়ার অ্যাপ্লাই করা হলে তাকে বলা হয় ঐ কোয়ান্টিফায়ারের স্কোপ

যেমন ∃x(x + y = 1) স্টেটমেন্টে x ভ্যারিয়েবল ∃ এর সাথে আছে, তাই x bound. কিন্তু y কোনো কোয়ান্টিফায়ারের সাথেও নেই এবং এতে কোনো ভ্যালুও অ্যাসাইন করা হয়নি তাই y free.

∃x(P(x) ∧ Q(x)) ∨ ∀xR(x) স্টেটমেন্টে সব ভ্যারিয়েবলই bound। এখানে প্রথম পার্টে ∃x এর স্কোপ হলো P(x) ∧ Q(x) কারণ ∃x শুধু P(x) ∧ Q(x) এর উপর অ্যাপ্লাই করা হয়েছে। একইভাবে পরবর্তী কোয়ান্টিফায়ার ∀x এর জন্য স্কোপ হলো R(x)। এক্সিস্টেনশিয়াল কোয়ান্টিফায়ার P(x) ∧ Q(x) এর মধ্যে x কে বাইন্ড করেছে এবং ইউনিভার্সাল কোয়ান্টিফায়ার R(x) এর মধ্যে এক্স কে বাইন্ড করেছে।

Logical Equivalences Involving Quantifiers

Predicates এবং Quantifiers যুক্ত স্টেটমেন্ট ইক্যুইভ্যালেন্ট হবে যদি ও কেবল যদি তাদের একই truth values থাকে। আমরা S ≡ T নোটেশন ব্যবহার করি predicates and quantifiers লজিক্যালি ইক্যুইভ্যালেন্ট এটা বুঝানোর জন্য।

ধরি আমাদেরকে ∀x(P(x) ∧ Q(x)) এবং ∀xP(x) ∧ ∀xQ(x) এই দুইটা স্টেটমেন্ট দেয়া আছে। আমাদেরকে দেখাতে হবে যে এই দুইটা স্টেটমেন্ট লজিক্যালি ইক্যুইভ্যালেন্ট।

প্রথমে আমরা ধরি ∀x(P(x) ∧ Q(x)) স্টেটমেন্ট true। তার মানে ডোমেইন যদি a ধরি তাহলে P(a) ∧ Q(a) true হবে। যদি তা হয় তাহলে P(a) এবং Q(a) true হবে। যেহেতু ডোমেইনের সকল a এর জন্য P(a) এবং Q(a) true সেহেতু আমরা বলতে পারি ∀xP(x) এবং ∀xQ(x) এই দুইটা true হবে। তার মানে ফাইনালি ∀xP(x) ∧ ∀xQ(x) true হবে।

এবার ধরি ∀xP(x) ∧ ∀xQ(x) true। তাহলে আমরা বলতে পারি ∀xP(x) এবং ∀xQ(x) এই দুইটা true। যদি ডোমেইন a হয় তাহলে বলতে পারি P(a) এবং Q(a) true। তাহলে সকল a এর জন্য P(a) ∧ Q(a) true হবে। এবং সবশেষে আমরা বলতে পারি ∀x(P(x) ∧ Q(x)) true হবে। সুতরাং ∀x(P(x) ∧ Q(x)) ≡ ∀xP(x) ∧ ∀xQ(x)।

Negating quantified expressions

ধরি আমাদের নিচের স্টেটমেন্টের নেগেশন বের করতে হবে -

Every student in your class has taken a course in calculus.

এটা একটা ইউনিভার্সাল কোয়ান্টিফিকেশন অর্থাৎ ∀xP(x), যেখানে P(x) হলো 'x has taken a course in calculus' এবং ডোমেইন হলো ক্লাসের ছাত্রছাত্রী। তাহলে এর নেগেশন হবে 'It is not the case that every student in your class has taken a course in calculus'. বা এটাকে এভাবেও লেখা যায়, 'There is a student in your class who has not taken a course in calculus.' লক্ষ্য করুন এটা কিন্তু অরিজিনাল প্রোপোজিশনের নেগেশনের এক্সিস্টেনশিয়াল কোয়ান্টিফায়ার যাকে লেখা যায় ∃x¬P(x)। তাহলে আমরা বলতে পারি একটা ইউনিভার্সাল কোয়ান্টিফায়ারের নেগেশন ঐ প্রোপোজিশনাল ফাংশনের নেগেশনের এক্সিস্টেনশিয়াল কোয়ান্টিফায়ারের ইক্যুইভ্যালেন্ট। এসব কথা বাদ দিয়ে যদি ইক্যুয়েশন দেখাই তাহলে আপনারা বুঝে যাবেন। উপরের প্যাঁচালো কথাকে আমরা নিচের মতো করে লিখতে পারি।

¬∀xP(x) ≡ ∃x¬P(x)

এটা প্রমাণ করার জন্য আমরা ধরে নিই ¬∀xP(x) true হবে যদি ও কেবল যদি ∀xP(x) false হয়। ∀xP(x) false হবে যদি ডোমেইনের কোনো x ভ্যালুর জন্য P(x) false হয়। তার মানে ডোমেইনের কোনো x ভ্যালুর জন্য ¬P(x) true হবে। ডোমেইনের কোনো ভ্যালুর জন্য ¬P(x) true হবে যদি ও কেবল যদি ∃x¬P(x) true হয়। সবকিছু মিলিয়ে আমরা বলতে পারি ¬∀xP(x) true হবে যদি ও কেবল যদি ∃x¬P(x) true হয়।

এবার আমরা যদি There is a student in this class who has taken a course in calculus এই স্টেটমেন্টটা দেখি দেখা যাবে এটা একটা এক্সিস্টেনশিয়াল কোয়ান্টিফায়ার অর্থাৎ ∃xQ(x), যেখানে Q(x) হচ্ছে 'x has taken a course in calculus' এবং ডোমেইন হলো ক্লাসের ছাত্রছাত্রীরা। এটার নেগেশন হবে 'It is not the case that there is a student in this class who has taken a course in calculus' বা 'Every student in this class has not taken calculus'। তার মানে এটা হলো অরিজিনাল প্রোপোজিশনাল ফাংশনের নেগেশনের ইউনিভার্সাল কোয়ান্টিফায়ার ∀x ¬Q(x)। তার মানে আমরা দেখতে পাচ্ছি ¬∃xQ(x) ≡ ∀x¬Q(x)।

এটা প্রমাণ করার জন্য আমাদের আগে ধরে নিতে হবে ¬∃xQ(x) true হবে যদি ও কেবল যদি ∃xQ(x) ফলস হয়। এটা হবে যদি ও কেবল যদি ডোমেইনের সকল ভ্যালুর জন্য Q(x) false হয়। ডোমেইনের সকল ভ্যালুর জন্য Q(x) false হবে যদি ও কেবল যদি ডোমেইনের সকল ভ্যালুর জন্য ¬Q(x) true হয়। এটা হবে যদি ও কেবল যদি ∀x¬Q(x) true হয়। সব মিলিয়ে আমরা বলতে পারি ¬∃xQ(x) true হবে যদি ও কেবল যদি ∀x¬Q(x) true হয়।

কোয়ান্টিফায়ারের নেগেশনের এই দুইটা রুলকে বলে De Morgan's laws for quantifiers. নিচে এই রুলগুলো সামারাইজ করে দেয়া হলো।

dmlaws.png

Translating from English into Logical Expressions

আমরা আর্টিকেল 1.2 তে এই কাজটা করেছিলাম। আজ আবার predicates and quantifiers এর জন্য করবো।

Express the statement “Every student in this class has studied calculus” using predicates and quantifiers.

প্রথমে আমরা এই স্টেটমেন্ট একটু অন্যভাবে লিখি। For every student in this class, that student has studied calculus. এবার আমরা আমাদের স্টেটমেন্টে x নিয়ে আসি। For every student x in this class, x has studied calculus. এবার আমরা একটা ফাংশন নিবো তা হলো C(x) যেটা বুঝায় 'x has studied calculus'। যদি ডোমেইন হয় ক্লাসের ছাত্রছাত্রীরা তাহলে আমরা আমাদের স্টেটমেন্টকে লিখতে পারি এভাবে - ∀xC(x)।

এটা ছাড়াও অন্য অনেকভাবে আমাদের স্টেটমেন্টকে আমরা লিখতে পারি। যেমন For every person x, if person x is a student in this class, then x has studied calculus. ধরি S(x) = 'person x is a student in this class'. তাহলে আমাদের স্টেটমেন্টকে লিখতে পারি এভাবে - ∀x(S(x) → C(x))।

এবার আমরা চাইছি কোন ছাত্রছাত্রী ক্যালকুলাস পড়ছে সেটা বের করতে। অর্থাৎ 'Student x is has studied subject y' এটাকে লিখা যায় Q(x, y) হিসেবে। যদি y এর জায়গায় আমরা calculus রাখি তাহলে আমাদের স্টেটমেন্টকে লেখা যায় ∀xQ(x, calculus) বা ∀x(S(x) → Q(x, calculus)) এই দুইভাবেই।

Conclusion

আজকের এই টপিকটি খুবই গুরুত্বপুর্ণ। আজকের এই টপিকটি যদি বুঝতে পারেন প্রোপোজিশনাল লজিক নিয়ে আর কখনও আপনাকে আটকাতে হবে না। আপনারা একবার পড়ে বুঝবেন না। পড়ার পর অবশ্যই প্র্যাকটিস করতে হবে বারবার। বইয়ে অসংখ্য উদাহরণ ও এক্সারসাইজ দেয়া আছে। সেগুলো করলেই মাথায় ভালভাবে ঢুকে যাবে এগুলো। পরের আর্টিকেলে Nested Quantifiers নিয়ে আলোচনা করা হবে। ততক্ষণ পর্যন্ত আপনারা এটা নিয়ে স্টাডি করুন।