সরাসরি পর্বে যান
পর্ব ০৯ · ৮৩-এর মধ্যে · মডিউল ২

প্রমাণের কৌশল — case, existence, uniqueness আর counterexample

Proof Strategies — Cases, WLOG, Exhaustive Proofs, Existence, Uniqueness, Counterexamples and Open Problems

Taught in Bangla, this lesson matches proof strategies to the shape of a claim: proof by cases and without loss of generality, exhaustive proofs on small domains, constructive and non-constructive existence (1729 and the √2^√2 argument), uniqueness as two tasks, and a single counterexample such as 2^11 − 1 = 2047 = 23 × 89. It shows backward reasoning for AM–GM, and in-page Python checks Goldbach and Collatz up to 10,000 to show why checking is not proving.

এই পর্বে যা শিখবেন

  • দাবির যুক্তিগত আকার দেখে প্রমাণের কৌশল বেছে নেওয়া, আর প্রমাণ “আবিষ্কারের” ধাপগুলো
  • Proof by cases, “without loss of generality”-র সঠিক ব্যবহার, আর ছোট domain-এ exhaustive proof
  • Constructive আর non-constructive existence proof, আর ∃! দাবির দুই অংশের uniqueness proof
  • Counterexample দিয়ে সর্বজনীন দাবি খণ্ডন, আর backward reasoning দিয়ে অসমতার প্রমাণ খোঁজা
  • Conjecture আর open problem কী, আর কেন যন্ত্রে যাচাই করা প্রমাণ নয়

১ · প্রমাণ খোঁজার আগে — দাবির আকার দেখে কৌশল বাছাই

পর্ব ০৮ (প্রমাণের পদ্ধতি — direct, contrapositive আর contradiction)-এ তিনটি মূল পদ্ধতি দেখানো হয়েছে: সরাসরি প্রমাণ, contrapositive দিয়ে প্রমাণ, আর বিরোধ দেখিয়ে প্রমাণ। এই পর্বের প্রশ্ন একটু অন্যরকম: একটি নতুন দাবি হাতে পেলে কোন পদ্ধতি, কোন সাজানো কাঠামো কাজে লাগবে, আর প্রমাণটি খুঁজে পাওয়া যাবে কীভাবে? এখানে একটি proof মানে আগের মতোই: সংজ্ঞা, স্বীকার্য আর আগে প্রমাণিত theorem থেকে প্রতিটি ধাপের কারণসহ একটি যুক্তির শিকল, যা পর্ব ০৬-এর অনুমানের নিয়ম মেনে চলে।

অভিজ্ঞ রিকশাওয়ালা গন্তব্য শুনেই রাস্তা বাছেন: “মিরপুর ১০? তাহলে রোকেয়া সরণি ধরে যাব; জ্যাম থাকলে পাশের গলি।” তিনি প্রতিবার সব রাস্তা ঘুরে দেখেন না। দাবির আকার হলো সেই গন্তব্য। “সব n-এর জন্য” দাবির রাস্তা আলাদা, “এমন একটি n আছে” দাবির রাস্তা আলাদা। আর একটি রাস্তা বন্ধ পেলে (প্রমাণ আটকে গেলে) পাশের গলি (অন্য কৌশল) ধরতে হয়।

দাবির আকার থেকে কৌশল

Claim shape (blue) → usual strategy (green)

From the shape of a claim to a proof strategy ∀x P(x) ∃x P(x) ∃!x P(x) মিথ্যা? সবার জন্য কেউ একজন ঠিক একজন ¬∀x P(x) direct · case ভাগ ছোট domain: exhaustive constructive বা non-constructive অস্তিত্ব + অনন্যতা দুই অংশে প্রমাণ একটি counterexample খণ্ডনের জন্য যথেষ্ট
ছবি ১.১ — দাবির যুক্তিগত আকারই প্রথম সূত্র। প্রতিটি সবুজ বাক্সের কৌশল এই পর্বের একটি অংশে প্রমাণসহ দেখানো হয়েছে; direct প্রমাণ পর্ব ০৮-এর বিষয়।

প্রমাণ কীভাবে “আবিষ্কার” হয়

পাঠ্যবইয়ের প্রমাণ পড়ে মনে হয়, লেখক প্রথম লাইন থেকেই সব জানতেন। বাস্তবে প্রমাণ খোঁজার খসড়া কাজ (scratch work) এলোমেলো, তবে সাধারণত পাঁচটি ধাপে চলে:

  1. ছোট ক্ষেত্রে হিসাব: n = 1, 2, 3, … বসিয়ে দেখুন দাবিটি টেকে কি না, আর কোনো প্যাটার্ন চোখে পড়ে কি না। Python এখানে দারুণ সহকারী।
  2. Counterexample খোঁজা: দাবিটি ভাঙার চেষ্টা করুন; ভাঙা না গেলে কেন যাচ্ছে না, সেটাই প্রমাণের সূত্র দেয়।
  3. আকার দেখে কৌশল বাছাই: ওপরের ছবির মতো ∀, ∃, ∃! বা “মিথ্যা সন্দেহ”।
  4. লক্ষ্য থেকে পিছিয়ে ভাবা: “এটা প্রমাণ করতে কী জানলে যথেষ্ট?” প্রশ্নটি বারবার করুন, যতক্ষণ না একটি জানা সত্যে পৌঁছান।
  5. পরিষ্কার প্রমাণ লেখা: খসড়া ফেলে দিয়ে প্রতিটি ধাপের কারণসহ সামনের দিকে লিখুন, শেষে ∎।

এই পর্বে Python ব্যবহার হবে দাবি খুঁজতে আর পরীক্ষা করতে: প্যাটার্ন দেখা, counterexample খোঁজা, ছোট সসীম domain পুরোটা ঘুরে দেখা। অসীম domain-এর দাবির ক্ষেত্রে কোনো সংখ্যক উদাহরণ প্রমাণের বিকল্প নয়। যন্ত্রের “সব ঠিক আছে” মানে শুধু “যতদূর দেখেছি, ঠিক আছে”।

এই পর্বে বারবার দুটি সংজ্ঞা লাগবে। একটি পূর্ণসংখ্যা n জোড় (even), যদি কোনো পূর্ণসংখ্যা k-এর জন্য n = 2k; আর বিজোড় (odd), যদি n = 2k + 1. প্রতিটি পূর্ণসংখ্যা ঠিক এই দুইয়ের একটি; একে বলে সংখ্যার parity (জোড়-বিজোড়ত্ব)। আর একটি বাস্তব সংখ্যা a-এর absolute value (পরম মান) |a| হলো a, যদি a ≥ 0; আর −a, যদি a < 0. যেমন |−3| = 3, |5| = 5.

২ · Proof by cases — সব সম্ভাবনা ভাগ করে প্রমাণ

“বাজারঘরের প্রতিটি অর্ডার তিন দিনের মধ্যে পৌঁছায়” যাচাই করতে কেউ দুই ভাগে দেখেন: ঢাকার ভেতরের আর বাইরের অর্ডার। দুই ভাগেই দাবি ঠিক হলে, আর এই দুই ভাগে সব অর্ডার পড়লে, দাবিটি সব অর্ডারের জন্য ঠিক। গণিতে এই চিন্তার নাম proof by cases (ক্ষেত্র ভাগ করে প্রমাণ)।

নিয়ম

(p1 ∨ p2 ∨ … ∨ pn) → q ≡ (p1 → q) ∧ (p2 → q) ∧ … ∧ (pn → q)

অর্থাৎ “কোনো একটি ক্ষেত্র ঘটলে q” প্রমাণ করতে প্রতিটি ক্ষেত্র pi থেকে আলাদা করে q প্রমাণ করলেই হয়। শর্ত একটিই: ক্ষেত্রগুলো মিলে সব সম্ভাবনা ঢাকতে হবে (p1 ∨ … ∨ pn সবসময় সত্য)। ক্ষেত্রগুলো একটি আরেকটির ওপর পড়লে (overlap) সমস্যা নেই; কোনো সম্ভাবনা বাদ পড়লে প্রমাণ অসম্পূর্ণ।

এই সমতুল্যতা পর্ব ০৩-এর De Morgan আর distributive law দিয়েই প্রমাণ করা যায়। Absolute value-এর সংজ্ঞাই দুই ক্ষেত্রে ভাগ করা, তাই |·| আছে এমন দাবিতে case ভাগ প্রায় স্বয়ংক্রিয়।

উপপাদ্য ২.১

সব বাস্তব সংখ্যা x, y-এর জন্য |xy| = |x| · |y|.

প্রমাণ (x আর y-এর চিহ্ন ধরে চার ক্ষেত্র): প্রতিটি বাস্তব সংখ্যা হয় ≥ 0, নয়তো < 0. তাই নিচের চারটি ক্ষেত্র সব সম্ভাবনা ঢাকে।

  1. x ≥ 0, y ≥ 0: তখন xy ≥ 0, তাই সংজ্ঞায় |xy| = xy. আবার |x| = x, |y| = y, তাই |x| · |y| = xy. দুই দিক সমান।
  2. x ≥ 0, y < 0: তখন xy ≤ 0, তাই |xy| = −xy (xy = 0 হলেও −0 = 0, তাই ঠিক)। আর |x| = x, |y| = −y, গুণফল x · (−y) = −xy. সমান।
  3. x < 0, y ≥ 0: ক্ষেত্র ২-এর মতো: xy ≤ 0, |xy| = −xy, আর |x| · |y| = (−x) · y = −xy. সমান।
  4. x < 0, y < 0: দুটি ঋণাত্মকের গুণফল ধনাত্মক, তাই |xy| = xy. আর |x| · |y| = (−x)(−y) = xy. সমান।
  5. চারটি ক্ষেত্র সব (x, y) জোড়া ঢাকে, আর প্রতিটিতে দুই দিক সমান। ∎

নিচের stepper-এ প্রতিটি ক্ষেত্রের সঙ্গে একটি নমুনা জোড়া দেওয়া আছে। নমুনা প্রমাণ নয়; সেটি শুধু দেখায় ক্ষেত্রটিতে বীজগণিত কী রকম দেখায়। “পরে” চাপুন:

1দাবি: |xy| = |x|·|y|2ক্ষেত্র ১: x ≥ 0, y ≥ 03ক্ষেত্র ২: x ≥ 0, y < 04ক্ষেত্র ৩: x < 0, y ≥ 05ক্ষেত্র ৪: x < 0, y < 06সব ক্ষেত্র ঢাকা ∎
এই ক্ষেত্র
নমুনা (x, y)
xy
|xy|
|x|·|y|
বীজগণিত
  1. দাবি আর পরিকল্পনা। |a|-এর সংজ্ঞাই দুই রূপে: a ≥ 0 হলে a, নইলে −a. x আর y দুটির প্রতিটির দুই চিহ্ন, তাই 2 × 2 = 4 ক্ষেত্র। প্রতিটিতে দুই দিক আলাদা করে হিসাব করব।
  2. ক্ষেত্র ১: দুটোই ≥ 0. xy ≥ 0, তাই |xy| = xy; আর |x|·|y| = x·y. নমুনা (3, 4): দুই দিকেই 12.
  3. ক্ষেত্র ২: x ≥ 0, y < 0. xy ≤ 0, তাই |xy| = −xy; আর |y| = −y, তাই |x|·|y| = x·(−y) = −xy. নমুনা (3, −4): xy = −12, দুই দিকেই 12.
  4. ক্ষেত্র ৩: x < 0, y ≥ 0. ক্ষেত্র ২-এর আয়না: |x| = −x, তাই |x|·|y| = (−x)·y = −xy = |xy|. নমুনা (−3, 4): দুই দিকেই 12.
  5. ক্ষেত্র ৪: দুটোই < 0. xy > 0, তাই |xy| = xy; আর (−x)(−y) = xy. নমুনা (−3, −4): xy = 12, দুই দিকেই 12.
  6. উপসংহার। প্রতিটি বাস্তব সংখ্যা ≥ 0 অথবা < 0, তাই চারটি ক্ষেত্র সব জোড়া ঢাকে। চারটিতেই সমতা প্রমাণিত, অতএব সব x, y-এর জন্য |xy| = |x|·|y|. ∎

ক্ষেত্র ২ আর ৩-এর যুক্তি প্রায় হুবহু এক; শুধু x আর y-এর ভূমিকা বদলেছে। পরের অংশে দেখবেন, এমন অবস্থায় একটি ক্ষেত্র লিখে বাকিটা “একইভাবে” বলার একটি নিয়মসম্মত উপায় আছে।

আরও দুটি ক্লাসিক case-প্রমাণ

বাজারঘরের অ্যাপে দুটি কুপনের মধ্যে বড় ছাড়টি দেখাতে হয়। প্রোগ্রামাররা কখনো কখনো if ছাড়াই সূত্রে বড়টি বের করেন। সূত্রটি ঠিক কেন?

উপপাদ্য ২.২

সব বাস্তব a, b-এর জন্য max(a, b) = (a + b + |a − b|) / 2, আর min(a, b) = (a + b − |a − b|) / 2.

প্রমাণ (max-এর অংশ, দুই ক্ষেত্র):

  1. a ≥ b: তখন max(a, b) = a, আর a − b ≥ 0, তাই |a − b| = a − b. ডান দিক (a + b + a − b) / 2 = 2a / 2 = a. সমান।
  2. a < b: তখন max(a, b) = b, আর a − b < 0, তাই |a − b| = b − a. ডান দিক (a + b + b − a) / 2 = b. সমান।
  3. যেকোনো দুই বাস্তব সংখ্যার জন্য a ≥ b অথবা a < b, তাই দুই ক্ষেত্র সব ঢাকে। min-এর অংশ একইভাবে, অথবা max + min = a + b থেকে। ∎

যাচাই: a = 7, b = 3 হলে (7 + 3 + 4) / 2 = 7; a = 2, b = 9 হলে (2 + 9 + 7) / 2 = 9.

Parity-র দুই ক্ষেত্র সংখ্যাতত্ত্বে সবচেয়ে বেশি কাজে লাগে।

উপপাদ্য ২.৩

প্রতিটি পূর্ণসংখ্যা n-এর জন্য n2-কে 4 দিয়ে ভাগ করলে ভাগশেষ 0 অথবা 1; কখনো 2 বা 3 নয়।

  1. n জোড়: n = 2k কোনো পূর্ণসংখ্যা k-এর জন্য। তখন n2 = 4k2, ভাগশেষ 0.
  2. n বিজোড়: n = 2k + 1. তখন n2 = 4k2 + 4k + 1 = 4(k2 + k) + 1, ভাগশেষ 1.
  3. প্রতিটি পূর্ণসংখ্যা জোড় অথবা বিজোড়, তাই দুই ক্ষেত্র সব ঢাকে। ∎

অনুসিদ্ধান্ত: দুটি পূর্ণবর্গের যোগফল x2 + y2-এর ভাগশেষ (4 দিয়ে) 0 + 0, 0 + 1, 1 + 0 বা 1 + 1, অর্থাৎ 0, 1 বা 2; কখনো 3 নয়। তাই 4m + 3 আকারের কোনো সংখ্যা দুটি পূর্ণবর্গের যোগফল নয়। বাজারঘর যদি একটি ধাঁধা-কুপন চালায়, “যার order id দুটি বর্গের যোগফল, সে পুরস্কার পাবে”, তাহলে 1003 (= 4 · 250 + 3) id-এর গ্রাহক কখনো পাবেন না, আর এটি জানতে একটি জোড়াও পরীক্ষা করতে হয় না।

সবচেয়ে সাধারণ ভুল: কোনো ক্ষেত্র বাদ পড়া। “সব n-এর জন্য n2 ≥ n” প্রমাণে কেউ লিখলেন: “n ≥ 1 হলে দুই দিককে n দিয়ে গুণ… ∎”। পূর্ণসংখ্যার জন্য n ≤ 0 ক্ষেত্রটি বাদ গেছে (সেখানে n2 ≥ 0 ≥ n, তাই দাবি টেকে, কিন্তু লিখতে হবে)। আর domain বাস্তব সংখ্যা হলে দাবিটিই মিথ্যা: n = 1/2 হলে n2 = 1/4 < 1/2. Domain কী, আর ক্ষেত্রগুলো সত্যিই পুরো domain ঢাকে কি না, সবসময় লিখে নিন।

৩ · “Without loss of generality” আর exhaustive proof

উপপাদ্য ২.১-এ ক্ষেত্র ২ আর ৩ একই যুক্তি, শুধু x আর y অদলবদল। গণিতবিদরা এমন জায়গায় লেখেন without loss of generality (সংক্ষেপে WLOG; বাংলায় “সাধারণতা না হারিয়ে”): একটি ক্ষেত্র প্রমাণ করে বলেন, বাকিগুলো নাম বদলালেই এই ক্ষেত্রে আসে। এটি কোনো নতুন যুক্তির নিয়ম নয়; এটি লেখার সংক্ষেপ। তাই এর পেছনে সবসময় একটি অলিখিত দাবি থাকে: “অন্য ক্ষেত্রের প্রমাণ এই প্রমাণ থেকে শুধু নাম বদলে পাওয়া যায়।” পাঠককে সেটি মেনে নিতে পারতে হবে।

উপপাদ্য ৩.১

x, y পূর্ণসংখ্যা, আর xy ও x + y দুটোই জোড় হলে x আর y দুটোই জোড়।

প্রমাণ (contrapositive, তারপর WLOG আর দুই ক্ষেত্র):

  1. Contrapositive প্রমাণ করব: x আর y দুটোই জোড় না হলে, xy বিজোড় অথবা x + y বিজোড়।
  2. ধরি x, y দুটোই জোড় নয়; তাহলে অন্তত একটি বিজোড়। দাবিটি x আর y-তে প্রতিসম (symmetric): x আর y অদলবদল করলে xy আর x + y বদলায় না। তাই WLOG ধরি x বিজোড়, x = 2m + 1.
  3. ক্ষেত্র y জোড়, y = 2n: x + y = 2(m + n) + 1, বিজোড়।
  4. ক্ষেত্র y বিজোড়, y = 2n + 1: xy = 4mn + 2m + 2n + 1 = 2(2mn + m + n) + 1, বিজোড়।
  5. দুই ক্ষেত্রেই xy বা x + y বিজোড়, তাই contrapositive প্রমাণিত, আর সেটি মূল দাবির সমতুল্য। ∎

ধাপ ২-এ WLOG ন্যায্য, কারণ “y বিজোড়” ক্ষেত্রের প্রমাণ x আর y অদলবদল করে হুবহু একই। কিন্তু দাবিটি প্রতিসম না হলে WLOG ভয়ানক ভুল করায়।

WLOG-এর অপব্যবহার, একটি উদাহরণ: “দাবি: সব বাস্তব x, y-এর জন্য x − y ≤ 0. প্রমাণ: WLOG ধরি x ≤ y. তাহলে x − y ≤ 0. ∎” দাবিটি মিথ্যা (x = 5, y = 2 হলে 3 > 0). ভুলটি WLOG-এ: x − y ≤ 0 দাবিটি x আর y-তে প্রতিসম নয়, তাই x > y ক্ষেত্রটি নাম বদলে x ≤ y ক্ষেত্রে আনা যায় না। নিয়ম: WLOG লেখার আগে নিজেকে জিজ্ঞেস করুন, “বাদ দেওয়া ক্ষেত্রটি ঠিক কোন নাম-বদলে এই ক্ষেত্রে আসে, আর তাতে দাবিটি কি একই থাকে?”

Exhaustive proof — domain ছোট হলে সবই দেখুন

কিছু দাবি সসীম, ছোট একটি domain নিয়ে। সেখানে প্রতিটি সদস্যের জন্য দাবিটি সরাসরি যাচাই করাই একটি সম্পূর্ণ প্রমাণ। একে বলে exhaustive proof (সব সম্ভাবনা পরীক্ষা করে প্রমাণ); এটি proof by cases-এর এমন রূপ, যেখানে প্রতিটি ক্ষেত্রে ঠিক একটি সদস্য। পর্ব ০১-এর brute force আর এখানে একই কাজ, পার্থক্য শুধু উদ্দেশ্যে: domain সসীম আর পুরোটা দেখা হলে সেটি প্রমাণ, আর অসীম domain-এর একটি অংশ দেখলে সেটি শুধু ইঙ্গিত, প্রমাণ নয়।

নিচের ব্লক তিনটি দাবি প্রমাণ করে। প্রথমটি: ১০০ পর্যন্ত পরপর দুটি perfect power (কোনো পূর্ণসংখ্যার ঘাত ab, যেখানে b ≥ 2) শুধু 8 = 23 আর 9 = 32. দ্বিতীয়টি: n = 1, 2, 3, 4-এর জন্য (n + 1)3 ≥ 3n. তৃতীয়টি উপপাদ্য ২.৩-কে অন্যভাবে দেখায়: n2-এর 4 দিয়ে ভাগশেষ শুধু n-এর 4 দিয়ে ভাগশেষের ওপর নির্ভর করে, তাই অসীম ℤ-এর বদলে চারটি ভাগশেষ দেখলেই সব n দেখা হয়ে যায়। প্রথমবার চালালে ব্রাউজারে Python (Pyodide) নামতে কয়েক সেকেন্ড লাগে।

# Exhaustive proof: সসীম domain-এর প্রতিটি সদস্য পরীক্ষা করা
# দাবি ১: 100 পর্যন্ত পরপর দুটি perfect power শুধু 8 আর 9
powers = sorted({a**b for a in range(1, 11)
                 for b in range(2, 7) if a**b <= 100})
print("perfect powers <= 100:", powers)
pairs = [(p, p + 1) for p in powers if p + 1 in powers]
print("consecutive pairs:", pairs)

# দাবি ২: n = 1, 2, 3, 4 হলে (n+1)^3 >= 3^n
for n in range(1, 7):
    ok = (n + 1)**3 >= 3**n
    print(f"n={n}: (n+1)^3 = {(n+1)**3:3}, 3^n = {3**n:3}",
          "OK" if ok else "FAILS")

# দাবি ৩: n^2 mod 4 নির্ভর করে শুধু n mod 4-এর ওপর,
# তাই অসীম ℤ-এর বদলে চারটি ভাগশেষ দেখলেই সব n দেখা হয়
table = {r: r * r % 4 for r in range(4)}
print("n mod 4 -> n^2 mod 4:", table)
sums = sorted({(a + b) % 4 for a in table.values() for b in table.values()})
print("x^2 + y^2 mod 4 can be:", sums)

আসল আউটপুট (ব্রাউজারের Python):

perfect powers <= 100: [1, 4, 8, 9, 16, 25, 27, 32, 36, 49, 64, 81, 100]
consecutive pairs: [(8, 9)]
n=1: (n+1)^3 =   8, 3^n =   3 OK
n=2: (n+1)^3 =  27, 3^n =   9 OK
n=3: (n+1)^3 =  64, 3^n =  27 OK
n=4: (n+1)^3 = 125, 3^n =  81 OK
n=5: (n+1)^3 = 216, 3^n = 243 FAILS
n=6: (n+1)^3 = 343, 3^n = 729 FAILS
n mod 4 -> n^2 mod 4: {0: 0, 1: 1, 2: 0, 3: 1}
x^2 + y^2 mod 4 can be: [0, 1, 2]

প্রথম দাবির domain সসীম (১ থেকে ১০০), আর a ≤ 10, b ≤ 6 সীমা সব perfect power ঢাকে, কারণ a ≥ 11 হলে a2 > 100 আর b ≥ 7 হলে 2b > 100. তাই এই আউটপুট একটি পূর্ণ প্রমাণ। দ্বিতীয় দাবিটি n ≤ 4-এর জন্য প্রমাণিত, আর ইচ্ছা করে চালানো n = 5, 6 দেখায় দাবিটি সব n-এর জন্য সত্য নয় (216 < 243): exhaustive proof যে domain-এর জন্য করা, তার বাইরে কিছু বলে না। তৃতীয় অংশে চারটি ভাগশেষ থেকেই উপপাদ্য ২.৩ আর তার অনুসিদ্ধান্ত আবার পাওয়া গেল; “চারটি দেখাই যথেষ্ট” কথাটির প্রমাণ আসবে পর্ব ২২ (Modular arithmetic — ঘড়ির গণিত আর modular exponentiation)-এ।

৪ · Existence proof — constructive আর non-constructive

∃x P(x) আকারের দাবি বলে, অন্তত একটি x আছে যার জন্য P(x) সত্য (∃ চিহ্নটি পর্ব ০৪-এ দেখেছেন)। এমন দাবির প্রমাণকে বলে existence proof (অস্তিত্বের প্রমাণ)। দুই রকম আছে। Constructive proof একটি নির্দিষ্ট উদাহরণ, যাকে witness বলে, হাতে তুলে দেয় আর দেখায় সেটি শর্ত মানে। Non-constructive proof দেখায় উদাহরণ থাকতেই হবে, কিন্তু কোনটি, তা না বলেও পারে; সাধারণত বিরোধ বা case ভাগ দিয়ে।

Constructive: উদাহরণটি দেখিয়ে দিন

একটি প্রচলিত গল্প: ১৯১০-এর দশকের শেষ দিকে ইংরেজ গণিতবিদ G. H. Hardy অসুস্থ Srinivasa Ramanujan-কে দেখতে গিয়ে বললেন, তাঁর ট্যাক্সির নম্বর 1729 একেবারে নিরস। Ramanujan নাকি সঙ্গে সঙ্গে উত্তর দেন, না, এটি সবচেয়ে ছোট সংখ্যা যা দুটি ধনাত্মক ঘনের যোগফল হিসেবে দুইভাবে লেখা যায়। সংখ্যাটির এই ধর্ম অবশ্য Ramanujan-এর আগেও জানা ছিল।

“দুটি ধনাত্মক ঘনের যোগফল দুইভাবে লেখা যায় এমন একটি ধনাত্মক পূর্ণসংখ্যা আছে” দাবির constructive প্রমাণ এক লাইনের: 1729 = 13 + 123 = 93 + 103. দুই দিক হিসাব করলেই হয় (1 + 1728 = 729 + 1000). আরেকটি ক্লাসিক constructive প্রমাণ সাধারণ n-এর জন্য:

উপপাদ্য ৪.১

প্রতিটি ধনাত্মক পূর্ণসংখ্যা n-এর জন্য পরপর n টি যৌগিক (composite, মৌলিক নয় এমন, 1-এর চেয়ে বড়) সংখ্যা আছে।

  1. N = (n + 1)! ধরি; এখানে (n + 1)! = 1 · 2 · … · (n + 1).
  2. N + 2, N + 3, …, N + (n + 1) সংখ্যাগুলো দেখি। এরা n টি, আর পরপর।
  3. যেকোনো j, যেখানে 2 ≤ j ≤ n + 1: j সংখ্যাটি N-এর গুণনীয়কগুলোর একটি, তাই j ∣ N; আর j ∣ j. তাই j ∣ (N + j). (∣ মানে “ভাগ করে”।)
  4. N + j > j ≥ 2, তাই j হলো N + j-এর একটি গুণনীয়ক যা 1-ও নয়, N + j-ও নয়। অতএব N + j যৌগিক।
  5. n টি সংখ্যাই যৌগিক, আর আমরা সেগুলো স্পষ্টভাবে লিখে দিয়েছি। ∎

বাজারঘরের ভাষায়: যত বড় n-ই নিন, এমন n টি পরপর order id আছে যার একটিও মৌলিক নয়, আর constructive প্রমাণ সেগুলো লিখে দেখায়। নিচের ব্লক n = 5-এর জন্য তা করে, আর 1729-কে brute force-এ খুঁজে পায়:

from math import factorial

# Constructive ১: দুইভাবে দুটি ধনাত্মক ঘনের যোগফল — ছোটতমটি
ways = {}
for a in range(1, 13):
    for b in range(a, 13):
        ways.setdefault(a**3 + b**3, []).append((a, b))
n = min(s for s, w in ways.items() if len(w) >= 2)
print(n, "=", " = ".join(f"{a}^3 + {b}^3" for a, b in ways[n]))

# Constructive ২: k টি পরপর যৌগিক সংখ্যা, (k+1)! + 2 থেকে শুরু
k = 5
for j in range(2, k + 2):
    m = factorial(k + 1) + j
    print(f"{m} = {j} x {m // j}")

# তুলনা: সবচেয়ে ছোট 5টি পরপর যৌগিক সংখ্যা খোঁজা (brute force)
def composite(m):
    return m > 3 and any(m % d == 0 for d in range(2, int(m**0.5) + 1))
first = next(s for s in range(2, 1000)
             if all(composite(s + i) for i in range(k)))
print("smallest run of 5:", list(range(first, first + k)))

আসল আউটপুট (ব্রাউজারের Python):

1729 = 1^3 + 12^3 = 9^3 + 10^3
722 = 2 x 361
723 = 3 x 241
724 = 4 x 181
725 = 5 x 145
726 = 6 x 121
smallest run of 5: [24, 25, 26, 27, 28]

প্রথম অংশে a, b ≤ 12 সীমা যথেষ্ট: 1729-এর চেয়ে ছোট কোনো যোগফলে b ≥ 13 থাকতে পারে না, কারণ 133 = 2197 > 1729. তাই “1729-ই ছোটতম” কথাটিও এখানে একটি exhaustive proof. দ্বিতীয় অংশ উপপাদ্য ৪.১-এর নির্মাণ: 6! = 720, আর 722 থেকে 726 পর্যন্ত প্রতিটি সংখ্যার পাশে প্রমাণের ধাপ ৩-এর গুণনীয়ক j ছাপা হয়েছে। তৃতীয় অংশ দেখায়, constructive প্রমাণ সবসময় ছোটতম উদাহরণ দেয় না: আসল প্রথম পাঁচটি পরপর যৌগিক সংখ্যা 24 থেকে 28. প্রমাণের জন্য যেকোনো একটি witness যথেষ্ট; ছোটতমটি খোঁজা আলাদা প্রশ্ন।

Non-constructive: আছে, কিন্তু কোনটি — জানি না

পর্ব ০৮-এ প্রমাণিত হয়েছে যে √2 irrational number (অমূলদ সংখ্যা: দুটি পূর্ণসংখ্যার ভাগফল p/q হিসেবে লেখা যায় না এমন বাস্তব সংখ্যা)। সেটি মেনে নিয়ে একটি বিখ্যাত দাবি:

উপপাদ্য ৪.২

এমন দুটি অমূলদ সংখ্যা x আর y আছে, যাদের জন্য xy একটি rational number (মূলদ সংখ্যা)।

  1. z = √2√2 সংখ্যাটি দেখি। প্রতিটি বাস্তব সংখ্যা হয় মূলদ, নয়তো অমূলদ; তাই দুই ক্ষেত্র।
  2. ক্ষেত্র ক, z মূলদ: x = √2, y = √2 নিন। দুটোই অমূলদ, আর xy = z মূলদ। দাবি প্রমাণিত।
  3. ক্ষেত্র খ, z অমূলদ: x = z, y = √2 নিন। দুটোই অমূলদ। ঘাতের নিয়ম (ab)c = abc (a > 0) থেকে xy = (√2√2)√2 = √2√2 · √2 = √22 = 2, যা মূলদ। দাবি প্রমাণিত।
  4. দুই ক্ষেত্র সব সম্ভাবনা ঢাকে, আর প্রতিটিতে একটি উপযুক্ত জোড়া আছে। ∎
1দাবি: ∃ অমূলদ x, y: xʸ মূলদ2z = √2^√2 নিই3ক্ষেত্র ক: z মূলদ → x = y = √24ক্ষেত্র খ: z অমূলদ → x = z, y = √25কোন ক্ষেত্র? জানি না, দরকারও নেই ∎
এই ধাপ
x
y
xʸ
প্রমাণের ধরন
  1. দাবি। খুঁজছি দুটি অমূলদ x, y, যাতে xy মূলদ। একটি জোড়া দেখাতে পারলেই যথেষ্ট, কারণ দাবিটি ∃ আকারের।
  2. একটি পরীক্ষামূলক সংখ্যা। z = √2√2 ≈ 1.6325 নিই। দশমিক মান দেখে z মূলদ কি না বলা যায় না।
  3. ক্ষেত্র ক: z মূলদ। তাহলে x = √2, y = √2 জোড়াই কাজ করে: দুটোই অমূলদ (পর্ব ০৮), আর xy = z মূলদ।
  4. ক্ষেত্র খ: z অমূলদ। তাহলে x = z নিজেই অমূলদ। y = √2 নিলে xy = √2√2·√2 = √22 = 2, যা মূলদ।
  5. উপসংহার। z মূলদ বা অমূলদ, তৃতীয় কিছু নয়। দুই ক্ষেত্রেই একটি জোড়া আছে, তাই দাবি প্রমাণিত। কিন্তু কোন জোড়াটি আসল witness, প্রমাণ তা বলেনি: এটিই non-constructive প্রমাণের বৈশিষ্ট্য।
  6. পরে জানা তথ্য। ১৯৩৪ সালে প্রমাণিত Gelfond–Schneider উপপাদ্য থেকে জানা যায় √2√2 আসলে অমূলদ (এমনকি transcendental). তাই আসল witness ক্ষেত্র খ-এর জোড়া। কিন্তু সেই গভীর উপপাদ্য ছাড়াই আমাদের প্রমাণ সম্পূর্ণ।

একই দাবির একটি constructive প্রমাণও আছে, শুধু একটু বেশি কাজ লাগে: x = √2 আর y = log2 9 নিন। তখন xy = 2(1/2) · log2 9 = 2log2 3 = 3, মূলদ। বাকি থাকে দেখানো যে log2 9 অমূলদ। বিরোধ দিয়ে: ধরি log2 9 = p/q, যেখানে p, q ধনাত্মক পূর্ণসংখ্যা (9 > 1, তাই লগটি ধনাত্মক)। তাহলে 2p/q = 9, অর্থাৎ 2p = 9q. বাম দিক জোড় (p ≥ 1), ডান দিক বিজোড় সংখ্যার ঘাত, তাই বিজোড়: বিরোধ। ∎ এখানেও parity-র দুই ক্ষেত্র কাজে লাগল।

৫ · Uniqueness proof — “ঠিক একটি” মানে দুটি কাজ

“ঠিক একটি x আছে যার জন্য P(x)” লেখা হয় ∃!x P(x); চিহ্নটির নাম uniqueness quantifier. এর অর্থ দুটি দাবির ∧:

∃!x P(x) ≡ ∃x ( P(x) ∧ ∀y ( P(y) → y = x ) )

তাই একটি uniqueness proof-এ দুটি আলাদা অংশ লাগে। অস্তিত্ব: একটি x দেখান যার জন্য P(x) সত্য। অনন্যতা: দেখান, P(y) সত্য এমন যেকোনো y আসলে x-ই। শুধু প্রথম অংশ করলে প্রমাণ হয় “অন্তত একটি”, শুধু দ্বিতীয়টি করলে “বড়জোর একটি”।

উপপাদ্য ৫.১

a আর b বাস্তব সংখ্যা, a ≠ 0. তাহলে ঠিক একটি বাস্তব সংখ্যা r আছে, যার জন্য ar + b = 0.

  1. অস্তিত্ব: r = −b/a নিন (a ≠ 0, তাই ভাগ বৈধ)। তখন ar + b = a(−b/a) + b = −b + b = 0.
  2. অনন্যতা: ধরি s একটি বাস্তব সংখ্যা যার জন্য as + b = 0. তাহলে as + b = ar + b, দুই দিক থেকে b বিয়োগ করে as = ar.
  3. a ≠ 0, তাই দুই দিককে a দিয়ে ভাগ করা বৈধ: s = r.
  4. একটি সমাধান আছে, আর যেকোনো সমাধান সেটিই। ∎

খেয়াল করুন, a ≠ 0 শর্তটি দুই অংশেই লাগল। a = 0 হলে দাবিটি ভেঙে যায় দুইভাবে: b ≠ 0 হলে কোনো সমাধানই নেই (অস্তিত্ব ব্যর্থ), আর b = 0 হলে প্রতিটি বাস্তব সংখ্যাই সমাধান (অনন্যতা ব্যর্থ)। উপপাদ্যের hypothesis কেন লাগে, তা দেখার সেরা উপায় হলো সেটি বাদ দিয়ে কোথায় প্রমাণ আটকায় তা খোঁজা।

উপপাদ্য ৫.২

ঠিক একটি জোড় prime number আছে, আর সেটি 2.

  1. অস্তিত্ব: 2 জোড় (2 = 2 · 1), আর এর ধনাত্মক গুণনীয়ক শুধু 1 আর 2, তাই মৌলিক।
  2. অনন্যতা: ধরি p একটি জোড় মৌলিক সংখ্যা। জোড়, তাই 2 ∣ p.
  3. মৌলিক সংখ্যার ধনাত্মক গুণনীয়ক শুধু 1 আর p; 2 ≠ 1, তাই 2 = p.
  4. অতএব যেকোনো জোড় মৌলিক সংখ্যা 2-ই। ∎

অনন্যতা প্রমাণের আরেকটি প্রচলিত ছাঁচ হলো বিরোধ: “ধরি দুটি ভিন্ন সমাধান r ≠ s আছে” লিখে একটি বিরোধে পৌঁছানো। দুই ছাঁচই ঠিক; প্রথমটি (যেকোনো সমাধান = r) সাধারণত ছোট আর পরিষ্কার। বাজারঘরের একটি ∃! দাবি: প্রতিটি অর্ডারের মোট টাকাকে ৫ টাকার কয়েন আর 0 থেকে 4 টাকার অবশিষ্টে ঠিক একভাবে ভাগ করা যায়; এটি division algorithm, যার প্রমাণ পর্ব ২০ (বিভাজ্যতা আর মৌলিক সংখ্যা — division algorithm আর unique factorization)-এ।

Uniqueness প্রমাণের দুটি সাধারণ ভুল: (১) শুধু একটি সমাধান দেখিয়ে “তাই অনন্য” লেখা; উদাহরণ দেখানো অস্তিত্ব প্রমাণ করে, অনন্যতা নয়। (২) অনন্যতা অংশে y-কে আগে থেকেই বিশেষ কিছু ধরে নেওয়া, যেমন “ধরি y-ও −b/a”; y হতে হবে এমন যেকোনো সংখ্যা যা শুধু শর্তটি মানে।

৬ · Counterexample — একটি উদাহরণই সর্বজনীন দাবি ভাঙে

পর্ব ০৪-এ দেখেছেন, ¬∀x P(x) ≡ ∃x ¬P(x). তাই “সব x-এর জন্য P(x)” মিথ্যা প্রমাণ করতে একটিমাত্র x দেখালেই হয় যার জন্য P(x) মিথ্যা। সেই x-ই counterexample. লক্ষ করুন, এটি নিজেই একটি constructive existence proof: ∃x ¬P(x)-এর witness. উল্টো দিকে, P(x) সত্য এমন হাজারটি x দেখালেও ∀x P(x) প্রমাণ হয় না, যদি না domain-টি সসীম হয় আর সবগুলো দেখা হয় (exhaustive proof).

বাজারঘরের হিসাব বিভাগের একজন দাবি করলেন: “যে order total 4 আর 6 দুটো দিয়েই বিভাজ্য, সেটি 24 দিয়েও বিভাজ্য, কারণ 4 × 6 = 24.” একটি counterexample: 12. সঠিক দাবি হতো 12 দিয়ে বিভাজ্য (4 আর 6-এর লসাগু)। আরও কয়েকটি ক্লাসিক মিথ্যা দাবি:

  • “প্রতিটি ধনাত্মক পূর্ণসংখ্যা দুটি পূর্ণবর্গের যোগফল।” Counterexample: 3 (উপপাদ্য ২.৩-এর অনুসিদ্ধান্ত থেকে 4m + 3-এর কোনোটিই নয়)।
  • “p মৌলিক হলে 2p − 1 মৌলিক।” p = 2, 3, 5, 7-এ সত্য (3, 7, 31, 127), কিন্তু 211 − 1 = 2047 = 23 × 89. এই আকারের মৌলিক সংখ্যাকে Mersenne prime বলে; সতেরো শতকের ফরাসি পাদ্রি Marin Mersenne-এর নামে।
  • “n2 + n + 41 সবসময় মৌলিক।” পর্ব ০১-এ দেখেছেন, n = 0 থেকে 39 পর্যন্ত টেকে, n = 40-এ 1681 = 412.

Counterexample-কে দাবির hypothesis মানতে হবে। “p মৌলিক হলে 2p − 1 মৌলিক” দাবির বিরুদ্ধে 24 − 1 = 15 = 3 × 5 দেখানো চলে না, কারণ 4 মৌলিকই নয়; শর্তই খাটেনি, তাই conditional-টি সেখানে ফাঁকা সত্য (পর্ব ০২)। Counterexample মানে এমন x, যার জন্য শর্ত সত্য এবং ফল মিথ্যা।

কিছু counterexample খুঁজতে হাতে অনেক সময় লাগে, আর সেখানে যন্ত্র সবচেয়ে কাজের। উনিশ শতকে জার্মান গণিতবিদ Moritz Stern দেখিয়েছিলেন, Christian Goldbach-এর একটি কম পরিচিত অনুমান (প্রতিটি বিজোড় যৌগিক সংখ্যা একটি মৌলিক আর একটি পূর্ণবর্গের দ্বিগুণের যোগফল, যেমন 9 = 7 + 2 · 12) মিথ্যা। আর অষ্টাদশ শতকে Leonhard Euler অনুমান করেছিলেন যে একটি পঞ্চম ঘাত পেতে অন্তত পাঁচটি পঞ্চম ঘাত যোগ করতে হয়; ১৯৬৬ সালে L. J. Lander আর T. R. Parkin কম্পিউটারে খুঁজে চারটির একটি উদাহরণ পান। নিচের ব্লক এই চারটি দাবিই পরীক্ষা করে:

from math import isqrt

N = 6000
sieve = bytearray([1]) * N
sieve[0] = sieve[1] = 0
for i in range(2, isqrt(N) + 1):
    if sieve[i]:
        sieve[i*i::i] = bytearray(len(sieve[i*i::i]))

# দাবি ক: p মৌলিক হলে 2^p - 1 মৌলিক?
for p in [2, 3, 5, 7, 11, 13]:
    m = 2**p - 1
    f = next((d for d in range(2, isqrt(m) + 1) if m % d == 0), None)
    print(f"p={p:2}: 2^p - 1 = {m:4}",
          "prime" if f is None else f"= {f} x {m // f}  <- counterexample")

# দাবি খ: 4 | n আর 6 | n হলে 24 | n ?
bad = [n for n in range(1, 100) if n % 4 == 0 and n % 6 == 0 and n % 24]
print("4|n, 6|n but not 24|n:", bad[:3])

# দাবি গ (Goldbach-এর "অন্য" অনুমান): প্রতিটি বিজোড় যৌগিক
# সংখ্যা = একটি মৌলিক + 2 x (একটি বর্গ), বর্গ >= 1 ?
def fits(n):
    return any(sieve[n - 2*k*k] for k in range(1, isqrt(n // 2) + 1))
odd_comp = [n for n in range(9, N, 2) if not sieve[n]]
print("odd composites checked:", len(odd_comp),
      "| failures:", [n for n in odd_comp if not fits(n)])

# দাবি ঘ (Euler-এর অনুমান): পঞ্চম ঘাত পেতে অন্তত পাঁচটি পঞ্চম ঘাত লাগে?
print("27^5 + 84^5 + 110^5 + 133^5 == 144^5:",
      27**5 + 84**5 + 110**5 + 133**5 == 144**5)

আসল আউটপুট (ব্রাউজারের Python):

p= 2: 2^p - 1 =    3 prime
p= 3: 2^p - 1 =    7 prime
p= 5: 2^p - 1 =   31 prime
p= 7: 2^p - 1 =  127 prime
p=11: 2^p - 1 = 2047 = 23 x 89  <- counterexample
p=13: 2^p - 1 = 8191 prime
4|n, 6|n but not 24|n: [12, 36, 60]
odd composites checked: 2217 | failures: [5777, 5993]
27^5 + 84^5 + 110^5 + 133^5 == 144^5: True

প্রতিটি লাইন একটি সম্পূর্ণ খণ্ডন, কারণ খণ্ডনের জন্য একটি witness-ই যথেষ্ট, আর প্রতিটি witness হাতে যাচাই করা যায় (23 × 89 = 2047 গুণ করেই দেখুন)। sieve হলো Eratosthenes-এর ছাঁকনি: sieve[n] 1 মানে n মৌলিক। দাবি গ ২২১৭টি বিজোড় যৌগিক সংখ্যায় পরীক্ষা হলো, আর মাত্র দুটি, 5777 আর 5993, শর্ত ভাঙে। হাতে কয়েকশো উদাহরণ দেখে কেউ এটিকে “সত্য” ভাবতেই পারতেন। শেষ লাইনে Python-এর অসীম-নির্ভুল int (arbitrary precision) কাজে লেগেছে: 1445 = 61917364224, আর তুলনাটি একদম সঠিক, কোনো দশমিক গোলমাল নেই।

৭ · সামনে আর পেছনে যুক্তি — AM–GM আবিষ্কার, আর পুরোনো প্রমাণ নতুন কাজে

এ পর্যন্ত প্রমাণগুলো মূলত forward reasoning (সামনের দিকে যুক্তি): hypothesis থেকে শুরু করে একের পর এক সত্য বাক্য টেনে লক্ষ্যে পৌঁছানো। কিন্তু কোথা থেকে শুরু করতে হবে, অনেক সময় বোঝা যায় না। তখন backward reasoning (পেছনের দিকে যুক্তি) কাজে দেয়: লক্ষ্য থেকে শুরু করে জিজ্ঞেস করুন, “কোন বাক্য সত্য হলে লক্ষ্যটি আসে?”, তারপর সেই বাক্যের জন্য আবার একই প্রশ্ন, যতক্ষণ না একটি জানা সত্যে পৌঁছান। শেষে শিকলটি উল্টে সামনের দিকে প্রমাণ লেখেন।

উপপাদ্য ৭.১ (দুই সংখ্যার AM–GM)

x আর y অঋণাত্মক বাস্তব সংখ্যা হলে (x + y) / 2 ≥ √(xy), আর সমতা হয় ঠিক তখন, যখন x = y.

বাম দিকটি x, y-এর গাণিতিক গড় (arithmetic mean, AM), ডান দিকটি জ্যামিতিক গড় (geometric mean, GM); তাই নাম AM–GM inequality. প্রমাণটি কোথা থেকে শুরু হবে, দেখে বোঝা যায় না। তাই খসড়ায় পেছন থেকে যাই, তারপর সামনে থেকে লিখি। নমুনা x = 4, y = 9 দিয়ে প্রতিটি ধাপ মিলিয়ে দেখুন:

1লক্ষ্য: (x+y)/2 ≥ √(xy)2⇐ x + y ≥ 2√(xy)3⇐ (x+y)² ≥ 4xy4⇐ x² − 2xy + y² ≥ 05⇐ (x − y)² ≥ 0  ✓ জানা6এখন ৫ → ৪ → ৩ → ২ → ১
x = 4, y = 9
বাম দিক
ডান দিক
দিক
  1. লক্ষ্য। (x + y)/2 ≥ √(xy). নমুনায় (4 + 9)/2 = 6.5 আর √36 = 6, তাই 6.5 ≥ 6. কোন সহজ বাক্য থেকে এটি আসবে, খুঁজছি।
  2. পেছনে ১: ভগ্নাংশ সরানো। দুই দিককে 2 দিয়ে গুণ করলে x + y ≥ 2√(xy); ধনাত্মক সংখ্যা দিয়ে গুণে অসমতার দিক বদলায় না। নমুনা: 13 ≥ 12.
  3. পেছনে ২: মূল সরানো। দুই দিক অঋণাত্মক, আর অঋণাত্মক a, b-এর জন্য a ≥ b ⟺ a2 ≥ b2. তাই বর্গ করা বৈধ: (x + y)2 ≥ 4xy. নমুনা: 169 ≥ 144.
  4. পেছনে ৩: বিস্তার। x2 + 2xy + y2 ≥ 4xy, দুই দিক থেকে 4xy বিয়োগ: x2 − 2xy + y2 ≥ 0. নমুনা: 16 − 72 + 81 = 25 ≥ 0.
  5. জানা সত্যে পৌঁছানো। বাম দিকটি (x − y)2, আর যেকোনো বাস্তব সংখ্যার বর্গ ≥ 0. নমুনা: (4 − 9)2 = 25 ≥ 0. খসড়া এখানেই শেষ।
  6. সামনে থেকে লেখা। আসল প্রমাণ শুরু হয় (x − y)2 ≥ 0 দিয়ে, তারপর ধাপ ৪, ৩, ২, ১ উল্টো ক্রমে। প্রতিটি “⇐” আসলে “⟺”, কারণ প্রতিটি ধাপ উল্টানো যায়: যোগ-বিয়োগ, ধনাত্মক দিয়ে গুণ, আর অঋণাত্মক সংখ্যায় বর্গমূল। নমুনায় শেষে 6.5 ≥ 6.
  7. সমতা কখন। সব ধাপ ⟺ বলে, সমতা ঠিক তখন যখন (x − y)2 = 0, অর্থাৎ x = y. যেমন x = y = 6: (6 + 6)/2 = 6 = √36.

পরিষ্কার প্রমাণ (সামনের দিকে):

  1. যেকোনো বাস্তব সংখ্যার বর্গ অঋণাত্মক, তাই (x − y)2 ≥ 0, অর্থাৎ x2 − 2xy + y2 ≥ 0.
  2. দুই দিকে 4xy যোগ করে: x2 + 2xy + y2 ≥ 4xy, অর্থাৎ (x + y)2 ≥ 4xy.
  3. x, y ≥ 0, তাই x + y ≥ 0 আর 4xy ≥ 0. অঋণাত্মক দুই সংখ্যায় বর্গমূল ক্রম রাখে: x + y ≥ √(4xy) = 2√(xy).
  4. দুই দিককে 2 দিয়ে ভাগ করে (x + y)/2 ≥ √(xy).
  5. সমতা: ধাপ ১–৪-এর প্রতিটি উল্টানো যায়, তাই শেষ বাক্যে সমতা ⟺ ধাপ ১-এ সমতা ⟺ (x − y)2 = 0 ⟺ x = y. ∎

খসড়ায় লক্ষ্য থেকে শুরু করে “সত্য” বাক্যে পৌঁছানো নিজে প্রমাণ নয়। সেভাবে লিখলে আপনি আসলে প্রমাণ করছেন “লক্ষ্য ⇒ জানা সত্য”, যা লক্ষ্য সম্পর্কে কিছুই বলে না (যেমন মিথ্যা 1 = −1 দুই দিক বর্গ করলে সত্য 1 = 1 পাওয়া যায়)। প্রতিটি ধাপ উল্টো দিকেও চলে কি না দেখে, প্রমাণটি সামনের দিকে লিখতে হয়।

বাজারঘরের প্রয়োগ: গুদামে একটি আয়তাকার তাক ঘিরতে ২০ মিটার বেড়া আছে। বাহু a আর b হলে 2(a + b) = 20, অর্থাৎ a + b = 10. AM–GM থেকে √(ab) ≤ (a + b)/2 = 5, তাই ক্ষেত্রফল ab ≤ 25 বর্গমিটার, আর সর্বোচ্চ 25 পাওয়া যায় ঠিক তখন, যখন a = b = 5 (বর্গাকার তাক)। যেমন 3 × 7 তাকের ক্ষেত্রফল মাত্র 21.

পুরোনো প্রমাণকে নতুন কাজে লাগানো

নতুন দাবির সামনে জিজ্ঞেস করুন: “এমন কিছু কি আগে প্রমাণ করেছি?” পর্ব ০৮-এর √2 অমূলদ প্রমাণটির কাঠামো হলো: √2 = p/q লঘিষ্ঠ আকারে ধরে, 2 ∣ p2 থেকে 2 ∣ p, তারপর 2 ∣ q, বিরোধ। একই কাঠামো √3-এ খাটে, শুধু “2 ∣ p2 ⇒ 2 ∣ p” ধাপটির জায়গায় একটি নতুন lemma লাগে।

Lemma ৭.২

পূর্ণসংখ্যা n-এর জন্য 3 ∣ n2 হলে 3 ∣ n.

প্রমাণ (contrapositive আর দুই ক্ষেত্র): ধরি 3 ∤ n (∤ মানে “ভাগ করে না”)। তাহলে n-কে 3 দিয়ে ভাগ করলে ভাগশেষ 1 বা 2.

  1. n = 3k + 1: n2 = 9k2 + 6k + 1 = 3(3k2 + 2k) + 1, তাই 3 ∤ n2.
  2. n = 3k + 2: n2 = 9k2 + 12k + 4 = 3(3k2 + 4k + 1) + 1, তাই 3 ∤ n2.
  3. দুই ক্ষেত্রেই 3 ∤ n2; contrapositive প্রমাণিত। ∎

উপপাদ্য ৭.৩: √3 অমূলদ।

  1. বিরোধের জন্য ধরি √3 = p/q, যেখানে p, q পূর্ণসংখ্যা, q ≠ 0, আর ভগ্নাংশটি লঘিষ্ঠ আকারে (p আর q-এর 1 ছাড়া কোনো সাধারণ ধনাত্মক গুণনীয়ক নেই)।
  2. বর্গ করে 3 = p2/q2, তাই p2 = 3q2; অর্থাৎ 3 ∣ p2.
  3. Lemma ৭.২ থেকে 3 ∣ p; লিখি p = 3m.
  4. তাহলে 9m2 = 3q2, অর্থাৎ q2 = 3m2, তাই 3 ∣ q2, আর আবার Lemma ৭.২ থেকে 3 ∣ q.
  5. 3 তাহলে p আর q দুটোরই গুণনীয়ক, যা ধাপ ১-এর লঘিষ্ঠ আকারের বিরোধী। অতএব √3 মূলদ নয়। ∎

পুরোনো প্রমাণ নতুন জায়গায় খাটানোর সময় প্রতিটি ধাপ নতুন করে যাচাই করতে হয়। একই ছাঁচে কেউ “√4 অমূলদ” প্রমাণ লিখে ফেলতে পারেন; কোন ধাপটি তখন ভেঙে যায়, অনুশীলন ৩-এ খুঁজে বের করুন।

৮ · Conjecture আর open problem — যাচাই করা মানেই প্রমাণ নয়

একটি conjecture (অনুমান) হলো এমন একটি দাবি, যা সত্য বলে মনে হয় (প্রায়ই অনেক উদাহরণ দেখে), কিন্তু এখনো প্রমাণিত বা খণ্ডিত হয়নি। প্রমাণ হলে এটি theorem হয়; একটি counterexample পেলে মিথ্যা প্রমাণিত হয়। বহু দশক ধরে কেউ মীমাংসা করতে পারেননি এমন প্রশ্নকে বলে open problem (অমীমাংসিত সমস্যা)। তিনটি বিখ্যাত উদাহরণ, যেগুলো স্কুলের গণিতেই বোঝা যায়:

Goldbach conjecture

২-এর চেয়ে বড় প্রতিটি জোড় সংখ্যা দুটি মৌলিকের যোগফল। যেমন 28 = 5 + 23. ১৭৪২ সালে Christian Goldbach-এর সঙ্গে Euler-এর চিঠিপত্র থেকে এর সূচনা।

Twin prime conjecture

p আর p + 2 দুটোই মৌলিক, এমন জোড়া (যেমন 11, 13 বা 29, 31) অসীম সংখ্যক আছে।

Collatz (3n + 1) conjecture

যেকোনো ধনাত্মক n থেকে শুরু করে, জোড় হলে n/2, বিজোড় হলে 3n + 1 নিতে থাকলে শেষ পর্যন্ত 1-এ পৌঁছানো যায়। জার্মান গণিতবিদ Lothar Collatz ১৯৩০-এর দশকে প্রশ্নটি তোলেন বলে প্রচলিত।

এগুলোর নাম Goldbach conjecture, twin prime conjecture আর Collatz conjecture. তিনটিই ছোট পরিসরে যন্ত্রে যাচাই করা খুব সহজ। নিচের ব্লক ১০,০০০ পর্যন্ত তিনটিই পরীক্ষা করে। মন দিয়ে দেখুন, আউটপুটের শেষ লাইনটি কেন সবচেয়ে গুরুত্বপূর্ণ:

from math import isqrt

N = 10000
sieve = bytearray([1]) * (N + 1)
sieve[0] = sieve[1] = 0
for i in range(2, isqrt(N) + 1):
    if sieve[i]:
        sieve[i*i::i] = bytearray(len(sieve[i*i::i]))
primes = [i for i in range(N + 1) if sieve[i]]

# Goldbach: 4 থেকে N পর্যন্ত প্রতিটি জোড় সংখ্যা = দুটি মৌলিকের যোগফল?
def smallest_p(n):
    return next(p for p in primes if sieve[n - p])
hard = max(range(4, N + 1, 2), key=smallest_p)
print("Goldbach OK for all even n in [4, 10000]; hardest:",
      hard, "=", smallest_p(hard), "+", hard - smallest_p(hard))

# Twin prime: p আর p + 2 দুটোই মৌলিক
twins = [(p, p + 2) for p in primes if p + 2 <= N and sieve[p + 2]]
print("twin prime pairs below 10000:", len(twins), "| last:", twins[-1])

# Collatz (3n+1): জোড় হলে n/2, বিজোড় হলে 3n+1; 1-এ পৌঁছায়?
def steps(n):
    c = 0
    while n != 1:
        n = n // 2 if n % 2 == 0 else 3 * n + 1
        c += 1
    return c
longest = max(range(1, N), key=steps)
print("Collatz reaches 1 for all n < 10000; longest:",
      longest, "with", steps(longest), "steps")
print("checked is not proved: N = 10000 is a tiny part of all n")

আসল আউটপুট (ব্রাউজারের Python):

Goldbach OK for all even n in [4, 10000]; hardest: 7426 = 173 + 7253
twin prime pairs below 10000: 205 | last: (9929, 9931)
Collatz reaches 1 for all n < 10000; longest: 6171 with 261 steps
checked is not proved: N = 10000 is a tiny part of all n

smallest_p(n) n-এর জন্য সবচেয়ে ছোট মৌলিক p খোঁজে যাতে n − p-ও মৌলিক; কোনো n-এ না পেলে next একটি error দিত, তাই error না আসাটাই এখানে “সব জোড় সংখ্যায় টিকেছে” এর প্রমাণ, শুধু এই পরিসরে। ১০,০০০-এর নিচে ২০৫টি twin prime জোড়া আছে, শেষটি (9929, 9931). Collatz-এ 6171 থেকে 1-এ পৌঁছাতে 261 ধাপ লাগে। কিন্তু শেষ লাইনটিই আসল কথা: অসীম ℕ-এর তুলনায় ১০,০০০ কিছুই নয়, আর আগের অংশের 5777 মনে রাখুন। গবেষকরা Goldbach-কে প্রায় 4 × 1018 পর্যন্ত আর Collatz-কে আরও অনেক দূর পর্যন্ত কম্পিউটারে যাচাই করেছেন বলে প্রকাশিত হয়েছে; তবু এই সব দাবি আজও (২০২৬ সালে এই পর্ব লেখার সময় পর্যন্ত, যতদূর জানা) অপ্রমাণিত।

বড় অনুমান কখনো কখনো শত বছর পরে প্রমাণিত হয়। Pierre de Fermat ১৬৩৭ সালের দিকে একটি বইয়ের মার্জিনে দাবি লিখেছিলেন যে n > 2 হলে xn + yn = zn-এর কোনো ধনাত্মক পূর্ণসংখ্যার সমাধান নেই; Andrew Wiles-এর প্রমাণ (Richard Taylor-এর সহযোগিতায় একটি ফাঁক মেরামতসহ) প্রকাশিত হয় ১৯৯৫ সালে। Twin prime-এর দিকে আংশিক অগ্রগতির কথা ভাবনার প্রশ্ন ০৪-এ আছে।

আরও গভীরে: Non-constructive প্রমাণ নিয়ে গণিতে সত্যিকারের দার্শনিক বিতর্ক আছে। বিশ শতকের শুরুতে L. E. J. Brouwer-এর intuitionism মতবাদ “p ∨ ¬p সবসময় সত্য” (law of excluded middle) নীতিকে অসীম সেটে মানতে অস্বীকার করে, আর তার ফলে উপপাদ্য ৪.২-এর মতো প্রমাণও। এই constructive গণিত আজ কম্পিউটার বিজ্ঞানে গুরুত্বপূর্ণ, কারণ Lean বা Coq (এখন Rocq নামে পরিচিত)-এর মতো proof assistant-এর ভিত্তির একটি ধারায় constructive প্রমাণ মানেই একটি প্রোগ্রাম, যা witness হিসাব করে বের করে দেয়। আরেকটি বিখ্যাত non-constructive কৌশল হলো “strategy stealing”: যেমন Chomp নামের খেলায় এভাবে প্রমাণ করা যায় প্রথম খেলোয়াড়ের জেতার কৌশল আছে, যদিও সাধারণ বোর্ডে সেই কৌশলটি কী, তা জানা নেই।

পরীক্ষা ও ইন্টারভিউতে: বিশ্ববিদ্যালয়, চাকরি বা ইন্টারভিউর পরীক্ষায় এই ধরনের প্রশ্ন প্রায়ই আসে:

  • প্রমাণ করুন: প্রতিটি পূর্ণসংখ্যা n-এর জন্য n2 + n জোড়। n2 + n = n(n + 1). দুই ক্ষেত্র: n জোড় হলে গুণনীয়ক n জোড়, n বিজোড় হলে গুণনীয়ক n + 1 জোড়; দুই ক্ষেত্রেই গুণফল জোড়।
  • “সব মৌলিক সংখ্যা বিজোড়” খণ্ডন করুন। Counterexample: 2.
  • Constructive আর non-constructive existence proof-এর পার্থক্য? প্রথমটি witness দেখায়; দ্বিতীয়টি শুধু অস্তিত্ব দেখায়, যেমন √2√2 যুক্তি।
  • ∃!x P(x) প্রমাণে কী কী দেখাতে হয়? অস্তিত্ব (P(x) সত্য এমন x) আর অনন্যতা (P(y) হলে y = x).
  • a, b ≥ 0 হলে a + b ≥ 2√(ab) কেন? (√a − √b)2 ≥ 0 বিস্তার করলেই; এটি AM–GM.

৯ · AI-এর যুগে — AI-এর লেখা প্রমাণ আর “উদাহরণ” কীভাবে যাচাই করবেন

AI সহকারী এই কৌশলগুলোর নাম ভালো জানে আর আত্মবিশ্বাসী ভাষায় প্রমাণ লেখে, কিন্তু একটি বাদ পড়া ক্ষেত্র বা অন্যায্য WLOG পড়ার সময় চোখেই পড়ে না। যে ভুলগুলো বেশি দেখা যায়:

AI-এর ভুলকীভাবে ধরবেন
Case ভাগে একটি ক্ষেত্র বাদ (শূন্য, ঋণাত্মক, সমান মান)ক্ষেত্রগুলোর ∨ সত্যিই পুরো domain ঢাকে কি না লিখে মিলান
প্রতিসম নয় এমন দাবিতে WLOGবাদ দেওয়া ক্ষেত্রটি কোন নাম-বদলে আসে, আর দাবি একই থাকে কি না দেখুন
উদাহরণ দেখিয়ে “সব n-এর জন্য প্রমাণিত” বলাDomain অসীম হলে উদাহরণ প্রমাণ নয়; যুক্তি চান
লক্ষ্য থেকে সত্যে পৌঁছে থেমে যাওয়া (উল্টানো যায় কি না না দেখে)প্রতিটি ⇐ ধাপ ⟺ কি না, বিশেষ করে বর্গ আর ভাগে
শূন্য হতে পারে এমন কিছু দিয়ে ভাগ, বা hypothesis ছাড়া উপপাদ্য ব্যবহারপ্রতিটি ভাগে “এটি ≠ 0 কেন?” আর প্রতিটি উপপাদ্যের শর্ত চেয়ে নিন
Open problem-কে “প্রমাণিত” বলা, বা অস্তিত্বহীন গবেষণাপত্রের উদ্ধৃতিলেখক, বছর আর শিরোনাম নিজে খুঁজে দেখুন

AI-কে প্রমাণ লিখতে দিলে কৌশল, ক্ষেত্রের তালিকা আর যাচাইয়ের উপায় আগে থেকেই চেয়ে নিন। নিচের কাঠামো কাজে দেয়:

নিচের দাবিটি প্রমাণ বা খণ্ডন করো: দাবি: [এখানে দাবি, domain-সহ] ১. প্রথমে দাবির যুক্তিগত আকার লেখো (∀, ∃, ∃! বা conditional) আর কোন কৌশল নিচ্ছ, কেন। ২. Case ভাগ করলে সব ক্ষেত্রের তালিকা দাও আর দেখাও যে তারা মিলে পুরো domain ঢাকে। ৩. WLOG ব্যবহার করলে ঠিক কোন নাম-বদলে বাকি ক্ষেত্র আসে, তা লেখো। ৪. প্রতিটি ধাপ নম্বর দিয়ে কারণসহ লেখো; কোনো উপপাদ্য ব্যবহার করলে তার সব শর্ত লেখো। ৫. দাবিটি মিথ্যা মনে হলে প্রমাণের চেষ্টা না করে একটি counterexample দাও, আর দেখাও সেটি hypothesis মানে। ৬. শেষে একটি ছোট Python কোড দাও, যা ছোট n-এর জন্য দাবিটি পরীক্ষা করে।

AI-এর প্রমাণ হাতে পেলে — যাচাইয়ের চেকলিস্ট

প্রমাণ দিয়ে প্রোগ্রাম ঠিক কি না দেখানোর অ্যালগরিদম-দিক DSA কোর্সের পর্ব ০৩-এ আছে, আর টেস্টিং কেন প্রমাণের বিকল্প নয়, তার প্রকৌশল-দিক সফটওয়্যার ইঞ্জিনিয়ারিং ও Git কোর্সের পর্ব ৪৫-এ।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন, তারপর “→ উত্তর” চাপুন।

প্র ০১কম্পিউটারে হাজার হাজার ক্ষেত্র পরীক্ষা করা exhaustive proof কি “আসল” প্রমাণ? চার রঙের উপপাদ্যের ইতিহাস কী বলে?

Four colour theorem বলে, একটি সমতলের মানচিত্রের দেশগুলোকে (পাশাপাশি দেশ আলাদা রঙে) চারটি রঙেই রাঙানো যায়। প্রশ্নটি উনিশ শতকের মাঝামাঝি থেকে খোলা ছিল। ১৯৭৬ সালে Kenneth Appel আর Wolfgang Haken এর প্রমাণ ঘোষণা করেন, যার কেন্দ্রে ছিল একটি বিশাল proof by cases: তাঁরা দেখান যে যেকোনো মানচিত্রে প্রায় দুই হাজার বিশেষ “configuration”-এর অন্তত একটি থাকবেই, আর প্রতিটি configuration কম্পিউটারে আলাদা করে পরীক্ষা করেন। হাতে সব ক্ষেত্র যাচাই করা কোনো মানুষের পক্ষে বাস্তবে সম্ভব ছিল না।

গণিতবিদদের একাংশ অস্বস্তি জানান: যে প্রমাণ কোনো মানুষ পুরো পড়তে পারে না, তা কি “বোঝা” যায়? প্রোগ্রামে বাগ থাকলে? যৌক্তিক দিক থেকে exhaustive proof একদম বৈধ: সসীম ক্ষেত্রের তালিকা যদি সত্যিই সব সম্ভাবনা ঢাকে, আর প্রতিটি ক্ষেত্র সত্যিই যাচাই হয়, তাহলে দাবি প্রমাণিত। দুর্বলতা আস্থার: তালিকাটি সম্পূর্ণ কি না, আর যাচাইকারী প্রোগ্রাম নির্ভুল কি না।

উত্তর এসেছে আরও যন্ত্র দিয়েই, তবে অন্যভাবে। ১৯৯০-এর দশকে Robertson, Sanders, Seymour আর Thomas একটি সরলতর কম্পিউটার-প্রমাণ দেন, আর ২০০৫ সালে Georges Gonthier পুরো প্রমাণটি Coq proof assistant-এ formal ভাবে যাচাই করেন: সেখানে প্রতিটি যুক্তির ধাপ একটি ছোট, বহুবার পরীক্ষিত kernel যাচাই করে। Thomas Hales-এর Kepler conjecture (গোলক সাজানোর সবচেয়ে ঘন উপায়) প্রমাণের ক্ষেত্রেও একই পথ: ১৯৯৮ সালের কম্পিউটার-নির্ভর প্রমাণ নিয়ে রিভিউয়াররা পুরো নিশ্চিত হতে পারেননি, পরে Flyspeck প্রকল্পে (২০১৪ সালে সম্পন্ন বলে ঘোষিত) formal যাচাই হয়।

এই পর্বের ছোট উদাহরণেও তাই: perfect power-এর প্রমাণে আমরা আলাদা করে লিখেছি কেন a ≤ 10, b ≤ 6 সীমা সব সম্ভাবনা ঢাকে।

মূল উপলব্ধি: Exhaustive proof যৌক্তিকভাবে পূর্ণ প্রমাণ; প্রশ্ন শুধু ক্ষেত্রের তালিকার সম্পূর্ণতা আর যাচাইকারীর নির্ভরযোগ্যতা নিয়ে, আর দুটিই আলাদা করে প্রমাণ বা যাচাই করতে হয়।

প্র ০২√2√2 যুক্তির মতো non-constructive প্রমাণ কি সত্যিই কিছু “দেয়”? এটি নিয়ে গণিতবিদরা কেন বিতর্ক করেছেন?

উপপাদ্য ৪.২-এর প্রমাণ শেষে আপনি জানেন “একটি জোড়া কাজ করে”, কিন্তু কোনটি, জানেন না। ক্লাসিক্যাল গণিতে এতে কোনো সমস্যা নেই, কারণ এটি law of excluded middle (প্রতিটি বাক্য সত্য অথবা মিথ্যা) মেনে চলে: z মূলদ বা অমূলদ, আর দুই ক্ষেত্রেই উত্তর আছে।

বিশ শতকের শুরুতে ডাচ গণিতবিদ L. E. J. Brouwer এই নীতির ঢালাও ব্যবহারে আপত্তি তোলেন। তাঁর intuitionism মতবাদে “অস্তিত্ব আছে” মানে “নির্মাণ করা যায়”; অসীম সেটের ক্ষেত্রে “p অথবা ¬p”-কে স্বতঃসিদ্ধ ধরা যায় না, যদি না আমরা জানি কোনটি সত্য। David Hilbert ছিলেন বিপরীত শিবিরে; তাঁর প্রচলিত উক্তি অনুযায়ী, গণিতবিদের কাছ থেকে excluded middle কেড়ে নেওয়া মানে জ্যোতির্বিদের কাছ থেকে দূরবীন কেড়ে নেওয়া। বিতর্কটি ১৯২০-এর দশকে বেশ তীব্র ছিল।

আজ বেশিরভাগ গণিতবিদ ক্লাসিক্যাল যুক্তি ব্যবহার করেন, কিন্তু constructive ধারণা কম্পিউটার বিজ্ঞানে নতুন জীবন পেয়েছে। Curry–Howard correspondence নামে পরিচিত একটি পর্যবেক্ষণ অনুযায়ী, কিছু ধরনের যুক্তি-ব্যবস্থায় একটি প্রমাণ আর একটি প্রোগ্রাম আসলে একই জিনিস: “∃x P(x)”-এর constructive প্রমাণ এমন একটি প্রোগ্রাম, যা x হিসাব করে দেয় আর সঙ্গে P(x)-এর প্রমাণ। Coq (এখন Rocq) আর Agda-র মতো proof assistant এই ভাবনার ওপর গড়া; Lean-এ ক্লাসিক্যাল যুক্তিও চলে, তবে কোন প্রমাণ “হিসাব করা যায়” আর কোনটি নয়, সেই পার্থক্য সেখানে চিহ্নিত থাকে।

বাস্তবে: বাজারঘরের প্রকৌশলীকে “৩ ঘণ্টার কম একটি ডেলিভারি রুট আছে” বললে তাঁর দরকার রুটটি। তবু non-constructive প্রমাণ জানায় খোঁজা বৃথা নয়, আর কখনো constructive প্রমাণের পথ দেখায় (যেমন log2 9 দিয়ে উপপাদ্য ৪.২-এর witness).

মূল উপলব্ধি: Non-constructive প্রমাণ সত্য প্রতিষ্ঠা করে, কিন্তু উদাহরণ দেয় না; কম্পিউটার বিজ্ঞানে constructive প্রমাণের বাড়তি মূল্য হলো, তা থেকে উত্তর হিসাব করার একটি প্রোগ্রাম পাওয়া যায়।

প্র ০৩কোটি কোটি উদাহরণে সত্য একটি দাবিও কি মিথ্যা হতে পারে? এমন বিখ্যাত ঘটনা কী আছে?

পারে, আর গণিতের ইতিহাসে এর নাটকীয় উদাহরণ আছে। এই পর্বেই Goldbach-এর “অন্য” অনুমান প্রথম ২০০০-এর বেশি বিজোড় যৌগিক সংখ্যায় টিকে ছিল, ভাঙল 5777-এ। কিন্তু এর চেয়ে অনেক বড় সংখ্যাও আছে।

Pólya conjecture: হাঙ্গেরীয় গণিতবিদ George Pólya ১৯১৯ সালে অনুমান করেন যে যেকোনো n-এর জন্য n পর্যন্ত সংখ্যার অন্তত অর্ধেকের মৌলিক গুণনীয়ক (পুনরাবৃত্তিসহ গুনে) বিজোড় সংখ্যক। ১৯৫৮ সালে C. B. Haselgrove দেখান দাবিটি মিথ্যা, আর পরে ছোটতম counterexample পাওয়া যায় প্রায় ৯০ কোটির ঘরে (906,150,257, ১৯৮০ সালে Minoru Tanaka-র হিসাবে, যেমন সাধারণত উদ্ধৃত হয়)। অর্থাৎ ৯০ কোটি পর্যন্ত প্রতিটি n দাবি মেনে চলে।

Euler-এর sum of powers conjecture: এই পর্বের ব্লকে Lander আর Parkin-এর পঞ্চম ঘাতের উদাহরণ দেখেছেন। চতুর্থ ঘাতের জন্য দাবিটি (একটি চতুর্থ ঘাত পেতে অন্তত চারটি চতুর্থ ঘাত লাগে) খণ্ডন করেন Noam Elkies (১৯৮৮ সালে প্রকাশিত কাজে): 26824404 + 153656394 + 187967604 = 206156734. এই সমতা আমরা scratch-এ Python-এ যাচাই করেছি; সংখ্যাগুলো এত বড় যে সাধারণ সার্চে পাওয়া অসম্ভব ছিল, Elkies তত্ত্ব ব্যবহার করে খোঁজার জায়গা ছোট করেছিলেন।

Mertens conjecture আরও চরম: ১৯৮৫ সালে Andrew Odlyzko আর Herman te Riele দেখান এটি মিথ্যা, কিন্তু counterexample যে কোথায়, তা আজও স্পষ্ট করে জানা নেই; জানা আছে শুধু যে এটি বিশাল কোনো সংখ্যার নিচে আছে। অর্থাৎ খণ্ডনটিও non-constructive!

তাই “1018 পর্যন্ত যাচাই করা” কথাটি জোরালো সাক্ষ্য হলেও প্রমাণ নয়: সংখ্যাতত্ত্বে কিছু প্রভাব এত ধীরে বাড়ে যে তা দেখা দেয় কেবল যন্ত্রের নাগালের বাইরের সংখ্যায়।

মূল উপলব্ধি: অসীম domain-এ উদাহরণের সংখ্যা যত বড়ই হোক, তা সর্বজনীন দাবির প্রমাণ নয়; কিছু counterexample শুধু তত্ত্বের সাহায্যে বা non-constructive ভাবেই পাওয়া যায়।

প্র ০৪Goldbach, twin prime আর Collatz বোঝা এত সহজ, অথচ প্রমাণ এত কঠিন কেন? গবেষকরা এ পর্যন্ত কতদূর এগিয়েছেন?

তিনটি প্রশ্নের একটি মিল: এরা যোগ আর গুণের মধ্যে একটি সম্পর্ক জানতে চায়। মৌলিক সংখ্যা সংজ্ঞায়িত হয় গুণ দিয়ে (গুণনীয়ক নেই), অথচ Goldbach আর twin prime জিজ্ঞেস করে যোগ নিয়ে (দুটি মৌলিকের যোগফল, পার্থক্য 2). Collatz-এ “2 দিয়ে ভাগ” আর “3 দিয়ে গুণ করে 1 যোগ” মিশে যায় এমনভাবে, যে কোনো সরল invariant (সবসময় কমে এমন রাশি) পাওয়া যায় না। এই ধরনের মিশ্রণ নিয়ন্ত্রণের সাধারণ পদ্ধতি গণিতে এখনো নেই।

তবু অগ্রগতি অনেক। Goldbach-এর “দুর্বল” রূপ (৫-এর চেয়ে বড় প্রতিটি বিজোড় সংখ্যা তিনটি মৌলিকের যোগফল) এর প্রমাণ Harald Helfgott ২০১৩ সালে ঘোষণা করেন, যা আগের শতকের I. M. Vinogradov-এর কাজের ওপর দাঁড়ানো।

Twin prime-এর দিকে ২০১৩ সালের Yitang Zhang-এর কাজ একটি মোড় ঘোরানো ঘটনা: প্রথমবার প্রমাণ হলো, কোনো একটি নির্দিষ্ট সসীম পার্থক্যে অসীম সংখ্যক মৌলিক জোড়া আছে। James Maynard আর Terence Tao-র স্বাধীন পদ্ধতি আর Polymath প্রকল্পে সেই পার্থক্য ২৪৬-এ নামে। কিন্তু বর্তমান পদ্ধতিগুলো 2-এ পৌঁছাতে পারবে না বলে বিশেষজ্ঞরা মনে করেন।

Collatz নিয়ে ২০১৯ সালে Terence Tao দেখান, “প্রায় সব” শুরুর সংখ্যার পথ শেষ পর্যন্ত খুব ছোট মানে নামে, একটি সুনির্দিষ্ট সম্ভাব্যতা-অর্থে। কিন্তু “প্রায় সব” আর “সব” এক নয়, আর ঠিক সেই ফাঁকেই সমস্যাটি দাঁড়িয়ে আছে। Paul Erdős-এর নামে একটি উক্তি প্রচলিত আছে যে গণিত এমন সমস্যার জন্য এখনো প্রস্তুত নয়।

তাই AI বা কোনো ওয়েবসাইট “Collatz প্রমাণিত হয়েছে” বললে আগে সন্দেহ করুন: এমন দাবি প্রায়ই আসে, আর ২০২৬ পর্যন্ত, যতদূর জানা, গবেষক সমাজ কোনোটি গ্রহণ করেনি।

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

প্র ০৫প্রমাণ খোঁজা কি শেখা যায়, নাকি শুধু প্রতিভার ব্যাপার? Pólya-র “How to Solve It” কী পরামর্শ দেয়?

George Pólya ১৯৪৫ সালে How to Solve It বইয়ে দেখাতে চেয়েছিলেন, সমস্যা সমাধানের পেছনে কিছু শেখানো যায় এমন অভ্যাস আছে। তিনি চারটি পর্যায়ের কথা বলেন: সমস্যা বোঝা, একটি পরিকল্পনা করা, পরিকল্পনা কাজে লাগানো, আর ফিরে দেখা। পরিকল্পনার জন্য তাঁর প্রশ্নগুলো এই পর্বের কৌশলের সঙ্গে প্রায় হুবহু মেলে: “অজানাটি কী? একই অজানা আছে এমন কোনো সমস্যা কি আগে দেখেছেন?” (পুরোনো প্রমাণ নতুন কাজে); “সমস্যাটির একটি অংশ সমাধান করতে পারেন?” (ক্ষেত্র ভাগ, ছোট ক্ষেত্র); “শর্তের সব অংশ কি ব্যবহার করেছেন?” (hypothesis যাচাই)।

Backward reasoning-এর ধারণাটি অনেক পুরোনো। প্রাচীন আলেকজান্দ্রিয়ার গণিতবিদ Pappus (খ্রিস্টীয় চতুর্থ শতকের দিকে) “analysis” আর “synthesis”-এর বর্ণনা দেন: analysis-এ যা চাই তা পাওয়া গেছে ধরে নিয়ে পিছিয়ে যাওয়া হয় একটি জানা বিষয় পর্যন্ত, আর synthesis-এ সেই জানা বিষয় থেকে সামনে এগিয়ে প্রমাণ লেখা হয়। AM–GM stepper ঠিক এটাই করেছে। Pólya নিজেও এই ঐতিহ্যের উল্লেখ করেছেন।

আধুনিক যুগে দুটি নতুন সহায়ক যোগ হয়েছে। প্রথমটি পরীক্ষামূলক গণিত: Python-এ ছোট ক্ষেত্র দেখে প্যাটার্ন বা counterexample খোঁজা, যা এই পর্বের প্রতিটি ব্লক করেছে। দ্বিতীয়টি proof assistant: Lean-এর mathlib-এর মতো লাইব্রেরিতে হাজারো উপপাদ্য যন্ত্রে যাচাই করা অবস্থায় আছে, আর নতুন প্রমাণের প্রতিটি ধাপ যন্ত্র পরীক্ষা করে। AI মডেল এখন কখনো কখনো এমন formal প্রমাণের খসড়া প্রস্তাব করে, আর যাচাইকারী সেটি গ্রহণ বা বাতিল করে; এভাবে AI-এর আত্মবিশ্বাসী ভুল ধরা পড়ে।

তবে কোনো সহায়ক বোঝাপড়ার বিকল্প নয়; প্রমাণ খোঁজার ক্ষমতা বাড়ে নিজে প্রমাণ লিখে, ভুল করে, আর সেই ভুল ধরে।

মূল উপলব্ধি: প্রমাণ খোঁজা একটি শেখার মতো দক্ষতা: দাবির আকার পড়া, ছোট ক্ষেত্রে পরীক্ষা, পেছন থেকে ভাবা আর সামনে থেকে লেখা, আর পুরোনো প্রমাণ মনে রাখা; যন্ত্র সাহায্য করে, কিন্তু যুক্তি আপনাকেই বুঝতে হয়।

অনুশীলন

আগে খাতায় করুন, তারপর উত্তর খুলে মেলান।

  1. প্রমাণ: প্রতিটি লাইনের কারণসহ প্রমাণ করুন যে সব বাস্তব x, y-এর জন্য |x + y| ≤ |x| + |y| (triangle inequality). ইঙ্গিত: x + y-এর চিহ্ন ধরে দুই ক্ষেত্র, আর প্রতিটি বাস্তব a-এর জন্য a ≤ |a| ও −a ≤ |a|.
    1. যেকোনো বাস্তব a-এর জন্য a ≤ |a| আর −a ≤ |a| (|a|-এর সংজ্ঞা থেকে দুই ক্ষেত্রে: a ≥ 0 হলে |a| = a ≥ −a; a < 0 হলে |a| = −a > a).
    2. ক্ষেত্র x + y ≥ 0: |x + y| = x + y ≤ |x| + |y|, কারণ x ≤ |x| আর y ≤ |y| (ধাপ ১)।
    3. ক্ষেত্র x + y < 0: |x + y| = −(x + y) = (−x) + (−y) ≤ |x| + |y|, কারণ −x ≤ |x| আর −y ≤ |y| (ধাপ ১)।
    4. প্রতিটি বাস্তব সংখ্যা ≥ 0 অথবা < 0, তাই দুই ক্ষেত্র সব (x, y) ঢাকে। ∎

    যাচাই: x = 3, y = −5 হলে |−2| = 2 ≤ 8; x = 3, y = 5 হলে 8 ≤ 8 (সমতা, কারণ একই চিহ্ন)। খেয়াল করুন, এখানে x আর y-এর আলাদা চিহ্ন ধরে চার ক্ষেত্র না করে x + y-এর চিহ্ন ধরে দুই ক্ষেত্র করা হয়েছে; ঠিক ক্ষেত্র বাছাই করলে প্রমাণ ছোট হয়।

  2. হিসাব: (ক) উপপাদ্য ৪.১-এর নির্মাণে n = 4 নিলে পরপর কোন ৪টি যৌগিক সংখ্যা পাওয়া যায়? প্রতিটির একটি গুণনীয়ক লিখুন। সবচেয়ে ছোট ৪টি পরপর যৌগিক সংখ্যা কোনগুলো? (খ) বাজারঘরের একটি আয়তাকার প্যাকেটের ভূমির পরিসীমা ৩৬ সেন্টিমিটার। ভূমির সর্বোচ্চ ক্ষেত্রফল কত, আর তখন বাহুগুলো কত? 4 × 14 ভূমির ক্ষেত্রফল কত?

    (ক) (n + 1)! = 5! = 120. সংখ্যাগুলো 122, 123, 124, 125, আর গুণনীয়ক যথাক্রমে 2, 3, 4, 5 (122 = 2 × 61, 123 = 3 × 41, 124 = 4 × 31, 125 = 5 × 25). সবচেয়ে ছোট ৪টি পরপর যৌগিক সংখ্যা 24, 25, 26, 27 (23 আর 29 মৌলিক, আর 24 থেকে 28 পর্যন্ত পাঁচটিই যৌগিক; এর আগে 8, 9, 10 মাত্র তিনটি)। দুটিই scratch-এ Python দিয়ে যাচাই করা।

    (খ) a + b = 18. AM–GM: √(ab) ≤ 9, তাই ab ≤ 81 বর্গসেন্টিমিটার, সমতা a = b = 9-এ। 4 × 14 ভূমির ক্ষেত্রফল 56, যা 81-এর চেয়ে অনেক কম।

  3. প্রমাণের ভুল ধরুন: উপপাদ্য ৭.৩-এর ছাঁচ নকল করে একজন লিখলেন: “দাবি: √4 অমূলদ। প্রমাণ: ১. ধরি √4 = p/q লঘিষ্ঠ আকারে। ২. তাহলে p2 = 4q2, তাই 4 ∣ p2. ৩. অতএব 4 ∣ p, লিখি p = 4m. ৪. তাহলে 16m2 = 4q2, তাই q2 = 4m2, আর 4 ∣ q. ৫. p, q দুটোই 4 দিয়ে বিভাজ্য: বিরোধ। ∎” কোন ধাপটি ভুল, একটি counterexample দিন, আর √3-এর প্রমাণে সেই ধাপ কেন ঠিক ছিল?
    • ভুল ধাপ ৩: “4 ∣ p2 ⇒ 4 ∣ p” মিথ্যা। Counterexample: p = 2; 4 ∣ 4 = p2, কিন্তু 4 ∤ 2. (ধাপ ৪-এর “4 ∣ q”-ও একই কারণে ভুল।)
    • √3-এ কেন ঠিক: সেখানে ধাপটি ছিল Lemma ৭.২ (3 ∣ n2 ⇒ 3 ∣ n), যা আলাদা করে case ভাগে প্রমাণ করা হয়েছিল। এই lemma মৌলিক সংখ্যার জন্য সত্য; 4 মৌলিক নয়, তাই সমতুল্য lemma নেই।
    • আসল ঘটনা: √4 = 2 = 2/1, মূলদ। ধাপ ২-এ p = 2, q = 1 বসালে দেখা যায় যুক্তি কোথায় ভাঙে।

    শিক্ষা: পুরোনো প্রমাণ নতুন জায়গায় নেওয়ার সময় প্রতিটি ধাপের পেছনের lemma নতুন সংখ্যার জন্য সত্যিই খাটে কি না দেখতে হয়।

  4. আউটপুট অনুমান: কোড না চালিয়ে বলুন কী ছাপা হবে। তারপর যেকোনো Python-এ চালিয়ে মেলান। দ্বিতীয় লাইনের ফল কি Collatz conjecture সম্পর্কে কিছু প্রমাণ করে?
    def steps(n):
        c = 0
        while n != 1:
            n = n // 2 if n % 2 == 0 else 3 * n + 1
            c += 1
        return c
    
    print([steps(n) for n in range(1, 8)])
    print(max(range(1, 30), key=steps), steps(27))
    [0, 1, 7, 2, 5, 8, 16]
    27 111

    n = 1-এ লুপ চলেই না (0 ধাপ)। n = 3: 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1, সাত ধাপ। n = 7-এ ১৬ ধাপ। ৩০-এর নিচে 27-এর পথ সবচেয়ে লম্বা, ১১১ ধাপ; পথে মান ৯০০০ ছাড়িয়ে যায়, যদিও শুরু মাত্র 27 থেকে। এটি দেখায় Collatz-এর পথ কতটা অনিয়মিত। কিন্তু কিছুই প্রমাণ করে না: ৩০-এর নিচে সব n-এ লুপ শেষ হয়েছে, এটুকুই জানা গেল। কোনো n-এ পথ কখনো 1-এ না পৌঁছালে এই function চিরকাল চলত; তাই এমন কোড counterexample “খুঁজে পেতেও” পারে না, শুধু আটকে যায়।

নিজেকে যাচাই করুন

ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।

ক্রম“ঠিক একটি x আছে যার জন্য P(x)” প্রমাণের ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)

  1. দাবিটিকে ∃x (P(x) ∧ ∀y (P(y) → y = x)) আকারে লেখা
  2. একটি প্রার্থী witness x খুঁজে বের করা
  3. দেখানো যে x শর্ত P(x) মানে (অস্তিত্ব অংশ)
  4. ধরা যে কোনো y-ও শর্ত P(y) মানে
  5. সেই y থেকে যুক্তি দিয়ে y = x দেখানো (অনন্যতা অংশ)

(p1 ∨ p2) → q কোনটির সমতুল্য, যা proof by cases-এর ভিত্তি?

  • p1 → q
  • (p1 → q) ∨ (p2 → q)
  • (p1 → q) ∧ (p2 → q)
  • (p1 ∧ p2) → q

কোন প্রমাণে “without loss of generality, ধরি x ≤ y” লেখা বৈধ?

  • সব বাস্তব x, y-এর জন্য x − y ≤ 0
  • সব বাস্তব x, y-এর জন্য max(x, y) + min(x, y) = x + y
  • সব ধনাত্মক x, y-এর জন্য x/y ≤ 1
  • সব বাস্তব x, y-এর জন্য 2x ≤ x + y

“এমন দুটি অমূলদ x, y আছে যাতে xy মূলদ” — z = √2√2 মূলদ কি না, দুই ক্ষেত্রে ভাগ করে প্রমাণটি কোন ধরনের?

  • Constructive existence proof
  • Counterexample দিয়ে খণ্ডন
  • Exhaustive proof
  • Non-constructive existence proof

“p মৌলিক হলে 2p − 1 মৌলিক” দাবির একটি বৈধ counterexample কোনটি?

  • p = 11, কারণ 2047 = 23 × 89
  • p = 4, কারণ 15 = 3 × 5
  • p = 7, কারণ 127
  • p = 9, কারণ 511 = 7 × 73

a ≠ 0 হলে ar + b = 0-এর ঠিক একটি বাস্তব সমাধান আছে। এর প্রমাণে “অনন্যতা” অংশে কী দেখাতে হয়?

  • r = −b/a বসালে সমীকরণটি সত্য হয়
  • কয়েকটি a, b-এর মানে একটিই সমাধান পাওয়া যায়
  • as + b = 0 হলে s = r
  • a = 0 হলে কোনো সমাধান নেই

একটি কম্পিউটার প্রোগ্রাম 1 থেকে 1012 পর্যন্ত প্রতিটি শুরুর সংখ্যায় দেখাল যে Collatz প্রক্রিয়া 1-এ পৌঁছায়। এ থেকে নিশ্চিতভাবে কী বলা যায়?

  • Collatz conjecture প্রমাণিত হয়েছে
  • 1012 পর্যন্ত কোনো counterexample নেই, কিন্তু দাবি অপ্রমাণিত
  • Collatz conjecture মিথ্যা প্রমাণিত হয়েছে
  • 1012-এর পরে কোনো counterexample থাকতে পারে না

শব্দকোষ

লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন, অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:

মনে রাখুন

  1. আকার আগে: ∀ দাবিতে direct, case বা (ছোট domain হলে) exhaustive; ∃-এ witness; ∃!-এ অস্তিত্ব + অনন্যতা; মিথ্যা সন্দেহ হলে counterexample.
  2. Case ভাগ: ক্ষেত্রগুলো মিলে পুরো domain ঢাকতে হবে; WLOG শুধু প্রতিসম দাবিতে, যেখানে বাকি ক্ষেত্র নাম বদলেই আসে।
  3. Existence: constructive প্রমাণ উদাহরণ দেয় (1729, (n + 1)! + j); non-constructive শুধু অস্তিত্ব দেখায় (√2√2).
  4. Counterexample: hypothesis মানে আর ফল ভাঙে এমন একটি উদাহরণই যথেষ্ট (2047 = 23 × 89); উদাহরণের স্তূপ কখনো প্রমাণ নয়।
  5. পেছন থেকে খুঁজুন, সামনে থেকে লিখুন: প্রতিটি ধাপ উল্টানো যায় কি না দেখুন; Goldbach, twin prime আর Collatz বহুদূর যাচাই করা, তবু অপ্রমাণিত।

পরের পর্বে: পর্ব ১০ · Mathematical induction — এক ধাপ থেকে অসীম পর্যন্ত। ডমিনোর সারির মতো একটি ভিত্তি আর একটি ধাপ দিয়ে অসীম সংখ্যক n-এর দাবি প্রমাণ, যোগফলের সূত্র থেকে L-আকৃতির টাইলে তাক ঢাকা পর্যন্ত।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

এই পর্বটি শেয়ার করুন:
এই পর্বে ভুল পেয়েছেন? জানান