Skip to content
All posts
Discrete Math

Implication আর Biconditional: “যদি… তাহলে…” এর logic

· 7 min read · #discrete-math #logic #implication

গত পর্বে দেখেছি ¬, ∧, ∨ আর ⊕। এগুলো সহজ, কারণ সাধারণ কথার সাথে মিলে যায়। কিন্তু implication (p → q) প্রথমবার দেখলে অনেকেরই মাথা ঘোরে। এই পর্বে সেটা পরিষ্কার করব, সাথে converse, inverse, contrapositive আর biconditional। (Section 1.1)

Implication (→)

p → q কে পড়ি "যদি p, তাহলে q"। একে বলে conditional statement বা implication।

  • p হলো hypothesis (antecedent বা premise)
  • q হলো conclusion (consequence)
pqp → q
TTT
TFF
FTT
FFT

পুরো table-এ false মাত্র একবার: যখন p true কিন্তু q false।

একটা promise দিয়ে বুঝি

ধরুন আম্মু বললেন: "যদি তুমি পরীক্ষায় A+ পাও, তাহলে তোমাকে একটা সাইকেল কিনে দেব।"

p = "তুমি A+ পেয়েছ", q = "আম্মু সাইকেল কিনে দিয়েছেন"। এবার চারটা case দেখি, কখন আম্মু কথা রাখলেন আর কখন ভাঙলেন:

  1. A+ পেয়েছ, সাইকেলও পেয়েছ (T, T): কথা রাখা হয়েছে। True
  2. A+ পেয়েছ, কিন্তু সাইকেল পাওনি (T, F): কথা ভাঙা হয়েছে। False
  3. A+ পাওনি, তবু সাইকেল পেয়েছ (F, T): আম্মু তো বলেননি A+ না পেলে দেবেন না। কথা ভাঙেননি। True
  4. A+ পাওনি, সাইকেলও পাওনি (F, F): এটাও কথা ভাঙা না। True

Promise ভাঙে কেবল দ্বিতীয় case-এ। তাই implication false শুধু তখনই।

Code-এ implication-এর আলাদা operator নেই, তবে p → q আর !p || q একই জিনিস (এটা প্রমাণ করব পর্ব ৪-এ):

implication.js
const implies = (p, q) => !p || q;
 
implies(true, true); // true
implies(true, false); // false
implies(false, true); // true
implies(false, false); // true

p → q বলার অনেক উপায়

একই implication নানাভাবে লেখা হয়। পরীক্ষায় এগুলো চিনতে পারা খুব জরুরি:

  • if p, then q
  • p implies q
  • q if p
  • q when p, q whenever p
  • p only if q
  • p is sufficient for q
  • q is necessary for p
  • q follows from p
  • q unless ¬p

এর মধ্যে তিনটা জায়গায় সবচেয়ে বেশি ভুল হয়।

"p only if q" মানে p → q, q → p না। "তুমি ভোট দিতে পারবে only if তোমার বয়স 18+।" এখানে p = ভোট দিতে পারা, q = বয়স 18+। ভোট দিতে পারলে বয়স অবশ্যই 18+, মানে p → q। কিন্তু 18+ হলেই ভোট দিতে পারবে, এমন কথা বলা হয়নি, voter list-এ নামও থাকতে হবে।

Necessary আর sufficient: "আগুন জ্বলতে হলে অক্সিজেন necessary।" p = আগুন জ্বলছে, q = অক্সিজেন আছে। আগুন জ্বললে অক্সিজেন থাকবেই (p → q), কিন্তু শুধু অক্সিজেন থাকলেই আগুন জ্বলে না। উল্টোদিকে, p হলো q-এর জন্য sufficient: আগুন জ্বলছে দেখলেই বোঝা যায় অক্সিজেন আছে।

"q unless ¬p": "তুমি ফেল করবে, যদি না তুমি পড়াশোনা করো।" এখানে q = তুমি ফেল করবে, ¬p = তুমি পড়াশোনা করো। তাই p = তুমি পড়াশোনা করো না, আর পুরো কথাটা p → q: "যদি পড়াশোনা না করো, তাহলে ফেল করবে।"

Converse, inverse আর contrapositive

p → q থেকে আরও তিনটা conditional বানানো যায়:

  • Converse: q → p (দুই পাশ অদলবদল)
  • Inverse: ¬p → ¬q (দুটোকেই negate)
  • Contrapositive: ¬q → ¬p (অদলবদল আর negate, দুটোই)

p → q থেকে converse, inverse আর contrapositive, কোন জোড়া equivalent

উদাহরণ: "যদি বৃষ্টি হয়, তাহলে আমি বাইরে যাব না।" p = বৃষ্টি হয়, q = আমি বাইরে যাব না।

  • Converse: যদি আমি বাইরে না যাই, তাহলে বৃষ্টি হচ্ছে।
  • Inverse: যদি বৃষ্টি না হয়, তাহলে আমি বাইরে যাব।
  • Contrapositive: যদি আমি বাইরে যাই, তাহলে বৃষ্টি হচ্ছে না।

সবচেয়ে গুরুত্বপূর্ণ কথা: contrapositive সবসময় original-এর সমান (logically equivalent)। Converse আর inverse সমান না। Truth table দিয়ে মিলিয়ে দেখি:

pqp → qq → p¬p → ¬q¬q → ¬p
TTTTTT
TFFTTF
FTTFFT
FFTTTT

p → q আর ¬q → ¬p কলাম হুবহু এক। কিন্তু highlight করা দুই row-তে converse আর inverse আলাদা হয়ে যায়।

মজার ব্যাপার, converse আর inverse নিজেরা কিন্তু একে অপরের সমান, কারণ inverse আসলে converse-এর contrapositive।

Biconditional (↔)

p ↔ q পড়ি "p if and only if q", সংক্ষেপে "p iff q"। এটা true হয় যখন p আর q-এর truth value একই: দুটোই true, অথবা দুটোই false।

pqp ↔ q
TTT
TFF
FTF
FFT

নাম থেকেই বোঝা যায়, এটা আসলে দুই দিকের implication: (p → q) ∧ (q → p)।

উদাহরণ: "তুমি boarding pass পাবে if and only if তোমার ticket থাকবে।" Ticket থাকলে pass পাবে, আর pass পেয়েছ মানে ticket আছে।

একই কথা অন্যভাবেও বলা হয়: "p is necessary and sufficient for q", অথবা "if p then q, and conversely"।

Code-এ দুটো boolean-এর জন্য এটা ===:

const p = false;
const q = false;
console.log(p === q); // true, দুটোই false

খেয়াল করুন, ↔ হলো ⊕-এর ঠিক উল্টো: যেখানে একটা true, অন্যটা false।

Compound proposition-এর truth table

কয়েকটা connective মিলিয়ে বড় expression হলে, ছোট ছোট অংশের আলাদা column বানিয়ে ধাপে ধাপে এগোতে হয়। উদাহরণ: p ∨ q → ¬r

pqr¬rp ∨ qp ∨ q → ¬r
TTTFTF
TTFTTT
TFTFTF
TFFTTT
FTTFTF
FTFTTT
FFTFFT
FFFTFT

Variable যত, row তত বাড়ে: n টা variable থাকলে row হয় 2ⁿ টা। 3 variable-এ 8, 4-এ 16, 10-এ 1024।

Operator precedence

Bracket না থাকলে কোন operator আগে হিসাব হবে, তার নিয়ম:

  1. ¬ (সবার আগে)
  2. ∧
  3. ∨
  4. →
  5. ↔ (সবার শেষে)

তাই p ∨ q → ¬r মানে (p ∨ q) → ¬r। যদি p ∨ (q → ¬r) বোঝাতে চান, bracket দিতেই হবে।

JavaScript-এও ! আগে, তারপর &&, তারপর ||। সন্দেহ হলে bracket দিন, পড়তেও সুবিধা।

Practice

প্রশ্ন ১. "তুমি এই app use করতে পারবে only if তুমি subscription কিনেছ।" p আর q ঠিক করে implication আকারে লিখুন।

Answer

p = তুমি app use করতে পারবে, q = তুমি subscription কিনেছ। "p only if q" মানে p → q: "যদি তুমি app use করতে পারো, তাহলে তুমি subscription কিনেছ।"

প্রশ্ন ২. "যদি আমি গান শুনি, তাহলে আমি পড়তে পারি না।" এর converse, inverse আর contrapositive লিখুন। কোনটা original-এর সমান?

Answer
  • Converse: যদি আমি পড়তে না পারি, তাহলে আমি গান শুনছি।
  • Inverse: যদি আমি গান না শুনি, তাহলে আমি পড়তে পারি।
  • Contrapositive: যদি আমি পড়তে পারি, তাহলে আমি গান শুনছি না।

শুধু contrapositive original-এর সমান।

প্রশ্ন ৩. p = F, q = T, r = F হলে (p → q) ∧ (q → r) এর value কী?

Answer

p → q = F → T = T। q → r = T → F = F। তাই T ∧ F = F।

শেষ কথা

  • p → q false শুধু তখন, যখন p true কিন্তু q false।
  • p false হলে implication সবসময় true (vacuously true)।
  • "p only if q" মানে p → q। Necessary আর sufficient গুলিয়ে ফেলবেন না।
  • Contrapositive original-এর সমান, converse আর inverse না।
  • p ↔ q true যখন দুটোর value একই।

পরের পর্বে দেখব এই logic বাস্তবে কোথায় লাগে: বাক্য থেকে logic, software requirement, puzzle আর logic circuit।