Counterexample
বিপ্রতীপ উদাহরণ
একটা universal দাবি খণ্ডন করার একটামাত্র উদাহরণ। `∀x P(x)` মিথ্যা প্রমাণ করতে একটা `x` যথেষ্ট যেখানে `P(x)` মিথ্যা।
“সব মৌলিক সংখ্যা বিজোড়” — খণ্ডন: 2। প্রমাণ শেষ।
কেন এটা এত শক্তিশালী: ∀ মিথ্যা প্রমাণ করতে একটা উদাহরণ যথেষ্ট,
কিন্তু সত্য প্রমাণ করতে সব ক্ষেত্র লাগে। এই অসাম্যটাই testing-এর
ভিত্তি — একটা failing test একটা counterexample।
কিন্তু উল্টোটা খাটে না। Euler-এর polynomial দেখুন:
n² + n + 41 — n = 0 থেকে 39 পর্যন্ত সব মৌলিক
n = 40 → 1681 = 41² যৌগিক
৪০টা passing test, তবু দাবিটা মিথ্যা। Pattern দেখে সিদ্ধান্তে আসা (inductive reasoning) প্রমাণ নয়।
Property-based testing (Hypothesis, QuickCheck) হলো counterexample খোঁজার স্বয়ংক্রিয় পদ্ধতি — এলোমেলো input চেষ্টা করে, আর পেলে সবচেয়ে ছোট রূপে shrink করে দেখায়। তবু কিছু না পাওয়া মানে দাবিটা সত্য নয় — শুধু আরো ভালো search।