এই পর্বে যা শিখবেন
- Binary operation আর group-এর সংজ্ঞা, উদাহরণ আর যেগুলো group নয় সেগুলো কেন নয়
- Identity আর inverse-এর অনন্যতা, cancellation আর Cayley table-এর Latin square ধর্মের প্রমাণ
- উপাদানের order, cyclic group আর ℤn-এর generator চেনার নিয়ম
- Subgroup test, coset দিয়ে group ভাগ করা আর Lagrange-এর উপপাদ্যের সম্পূর্ণ প্রমাণ
- Lagrange থেকে Fermat, Euler আর “মৌলিক আকারের group cyclic”, আর homomorphism ও isomorphism-এর ধারণা
১ · Symmetry থেকে group — binary operation আর চারটি axiom
বাজারঘরের গুদামে একটি ১২ ঘণ্টার দেয়াল-ঘড়ি দেখে ডেলিভারির পালা ঠিক হয়। এখন ৫টা, ৯ ঘণ্টা পরের পালা কখন? ২টা। এখানে চারটি জিনিস নীরবে কাজ করছে: যত ঘণ্টাই যোগ করুন, উত্তর আবার ঘড়ির একটি ঘর; তিনটি সময় যোগ করার ক্রমে বন্ধনী কোথায় বসল তাতে কিছু আসে যায় না; ০ ঘণ্টা যোগ করা মানে কিছু না করা; আর প্রতিটি সামনে ঘোরানোর একটি পেছনে ঘোরানো আছে, যা আগের জায়গায় ফেরায়। একটি বর্গাকার ট্রে ঘোরানো বা উল্টানো (পর্ব ৫১), আর মৌলিক p-এর mod-এ গুণ (পর্ব ২৯), দুটিতেই হুবহু এই চারটি ধর্ম। Group তত্ত্ব এই সাধারণ কাঠামোকে একবার নাম দিয়ে একবারেই প্রমাণ করে।
একটি সেট G-এর ওপর binary operation ∗ হলো একটি ফাংশন ∗: G × G → G, যা প্রতিটি ক্রমজোড় (a, b)-কে G-এর একটি উপাদান a ∗ b দেয় (পর্ব ১৬)। “ফল G-তেই থাকে”, এই শর্তকে closure বা বদ্ধতা বলে।
সেট G আর তার ওপর binary operation ∗ মিলে একটি group (G, ∗), যদি:
- সংযোজন নিয়ম: সব a, b, c ∈ G-তে (a ∗ b) ∗ c = a ∗ (b ∗ c). এই ধর্মের অপারেশনকে associative বলে।
- একক উপাদান: এমন e ∈ G আছে যে সব a-তে e ∗ a = a ∗ e = a. একে identity element বলে।
- Inverse: প্রতিটি a ∈ G-এর জন্য এমন b ∈ G আছে যে a ∗ b = b ∗ a = e. একে a-এর inverse বলে, লেখা হয় a−1.
Closure সংজ্ঞা ১.১-এর ভেতরেই আছে; অনেক বই তাকে আলাদা চতুর্থ axiom হিসেবে লেখে। সব a, b-তে a ∗ b = b ∗ a হলে group-টি abelian (বিনিময়যোগ্য)। G-এর উপাদানের সংখ্যা |G|-কে group-এর order বলে।
অপারেশন যোগ হলে আমরা a + b, একক 0 আর inverse −a লিখি; গুণ হলে ab, একক 1 আর a−1. সাধারণ আলোচনায় গুণের লেখাই চলে। কয়েকটি পরিচিত সেট-অপারেশন জোড়া যাচাই করা যাক:
| সেট, অপারেশন | Group? | কারণ |
|---|---|---|
| (ℤ, +) | হ্যাঁ, abelian | একক 0, a-এর inverse −a |
| (ℤ, −) | না | (5 − 3) − 2 = 0 কিন্তু 5 − (3 − 2) = 4: সংযোজন নিয়ম ভাঙে |
| (ℕ, +), ℕ = {0, 1, 2, …} | না | 3-এর inverse −3 সেটে নেই |
| (ℤ, ×) | না | একক 1, কিন্তু 2-এর inverse 1/2 পূর্ণসংখ্যা নয় |
| (ℚ \ {0}, ×) | হ্যাঁ, abelian | a-এর inverse 1/a |
| (ℤn, + mod n) | হ্যাঁ, abelian | একক 0, a-এর inverse n − a (a ≠ 0 হলে) |
| ({0, …, n − 1}, × mod n) | না | 0-এর কোনো inverse নেই |
| (ℤn*, × mod n) | হ্যাঁ, abelian | নিচে প্রমাণ |
শেষ সারির সেটটি এই পর্বের প্রধান উদাহরণ। পর্ব ২২-এর ℤn = {0, 1, …, n − 1} থেকে শুধু n-এর সঙ্গে সহমৌলিক সংখ্যাগুলো নিন:
ℤn* = { a : 1 ≤ a ≤ n − 1, gcd(a, n) = 1 }, |ℤn*| = φ(n).
এখানে φ হলো পর্ব ২৪-এর Euler-এর totient. একে n-এর unit group বলে, কারণ এর উপাদানগুলোই mod n-এ উল্টানো যায়। এটি group কেন: (১) gcd(a, n) = gcd(b, n) = 1 হলে gcd(ab, n) = 1, কারণ n-এর কোনো মৌলিক উৎপাদক ab-কে ভাগ করলে a বা b-কে ভাগ করত (Euclid-এর lemma), তাই closure আছে; (২) সাধারণ গুণের সংযোজন নিয়ম mod n-এও খাটে; (৩) একক 1; (৪) gcd(a, n) = 1 বলে Bézout থেকে ax + ny = 1, তাই x mod n হলো a-এর modular inverse (পর্ব ২১), আর x-ও n-এর সঙ্গে সহমৌলিক। ∎ যেমন ℤ9* = {1, 2, 4, 5, 7, 8}, আকার φ(9) = 6.
২ · প্রথম উপপাদ্যগুলো — একক, inverse আর cancellation
Axiom থেকে প্রথম যে ফলগুলো আসে, সেগুলো দেখতে নিরীহ, কিন্তু পরের প্রতিটি প্রমাণ এদের ওপর দাঁড়িয়ে। প্রতিটি শুধু চারটি axiom ব্যবহার করে, তাই যেকোনো group-এ খাটে।
(ক) একটি group-এ একক উপাদান ঠিক একটি। (খ) প্রতিটি a-এর inverse ঠিক একটি।
- (ক) ধরুন e আর e′ দুটিই একক। e ∗ e′ = e′, কারণ e একক; আবার e ∗ e′ = e, কারণ e′ একক। তাই e = e′. — এককের সংজ্ঞা দুবার
- (খ) ধরুন b আর c দুটিই a-এর inverse. তাহলে b = b ∗ e = b ∗ (a ∗ c) = (b ∗ a) ∗ c = e ∗ c = c. — একক, inverse, সংযোজন নিয়ম
- দুই ক্ষেত্রেই “দুটি” বলে যা ধরেছিলাম, তারা আসলে একই উপাদান। ∎
এর একটি ফল: (ab)−1 = b−1a−1, কারণ (ab)(b−1a−1) = a(bb−1)a−1 = aa−1 = e, আর inverse অনন্য। ক্রম উল্টে যায়, ঠিক যেমন আগে মোজা তারপর জুতা পরলে খোলার সময় আগে জুতা, তারপর মোজা।
যেকোনো group-এ ab = ac হলে b = c, আর ba = ca হলে b = c. একে cancellation law বলে।
- ab = ac-এর দুই দিকে বাঁ থেকে a−1 গুণ করুন: a−1(ab) = a−1(ac). — inverse আছে
- সংযোজন নিয়মে (a−1a)b = (a−1a)c, অর্থাৎ eb = ec, তাই b = c. ডান দিকের ক্ষেত্রে ডান থেকে গুণ করুন। ∎ — সংযোজন, একক
সাধারণ পূর্ণসংখ্যার গুণে কাটাকাটি সবসময় চলে না: mod 6-এ 2 · 1 ≡ 2 · 4 ≡ 2, অথচ 1 ≠ 4. কারণ 2-এর mod 6-এ কোনো inverse নেই, অর্থাৎ ({0, …, 5}, × mod 6) group নয় (পর্ব ২২-এর সতর্কতা এখানে উপপাদ্যের ভাষা পেল)।
সসীম group-এর Cayley table, অর্থাৎ যে টেবিলের a সারি আর b কলামের ঘরে ab লেখা, তার প্রতিটি সারি আর প্রতিটি কলামে G-এর প্রতিটি উপাদান ঠিক একবার আসে। এমন বর্গ টেবিলকে Latin square বলে।
- a সারিতে দুটি ঘরে একই উপাদান থাকলে ab = ac, যেখানে b ≠ c. Cancellation বলে b = c, বিরোধ। তাই সারির |G|টি ঘরে সব উপাদান আলাদা। — উপপাদ্য ২.২
- |G|টি আলাদা উপাদান, আর G-তে মোট |G|টি উপাদান, তাই প্রতিটি উপাদান ঠিক একবার। — পর্ব ৩২-এর গণনা
- কলামের জন্য ba = ca থেকে একই যুক্তি। ∎
উল্টোটা সত্য নয়: Latin square হলেই group হয় না, কারণ টেবিল দেখে সংযোজন নিয়ম বোঝা যায় না। তাই নিচের কোড চারটি শর্তই আলাদা করে পরীক্ষা করে, সংযোজন নিয়মের জন্য সব |G|3টি ত্রয়ী। প্রথমবার চালালে ব্রাউজারে Python (Pyodide) নামতে কয়েক সেকেন্ড লাগে।
from math import gcd
def check_group(G, op):
G = list(G)
if any(op(a, b) not in G for a in G for b in G):
return "not closed"
if any(op(op(a, b), c) != op(a, op(b, c)) for a in G for b in G for c in G):
return "not associative"
ids = [e for e in G if all(op(e, a) == a == op(a, e) for a in G)]
if not ids:
return "no identity"
e = ids[0]
if any(all(op(a, b) != e for b in G) for a in G):
return "some element has no inverse"
rows_ok = all(sorted(op(a, b) for b in G) == sorted(G) for a in G)
return f"group, identity {e}, Latin square: {rows_ok}"
tests = {
"Z6, + mod 6": (range(6), lambda a, b: (a + b) % 6),
"Z9*, x mod 9": ([a for a in range(1, 9) if gcd(a, 9) == 1],
lambda a, b: a * b % 9),
"{1..5}, x mod 6": (range(1, 6), lambda a, b: a * b % 6),
"Z5, - mod 5": (range(5), lambda a, b: (a - b) % 5),
"Z6, x mod 6": (range(6), lambda a, b: a * b % 6),
}
for name, (G, op) in tests.items():
print(f"{name:16} -> {check_group(G, op)}")
U9 = [a for a in range(1, 9) if gcd(a, 9) == 1]
print("Z9* =", U9)
for a in U9:
print(a, [a * b % 9 for b in U9])আসল আউটপুট (ব্রাউজারের Python):
Z6, + mod 6 -> group, identity 0, Latin square: True
Z9*, x mod 9 -> group, identity 1, Latin square: True
{1..5}, x mod 6 -> not closed
Z5, - mod 5 -> not associative
Z6, x mod 6 -> some element has no inverse
Z9* = [1, 2, 4, 5, 7, 8]
1 [1, 2, 4, 5, 7, 8]
2 [2, 4, 8, 1, 5, 7]
4 [4, 8, 7, 2, 1, 5]
5 [5, 1, 2, 7, 8, 4]
7 [7, 5, 1, 8, 4, 2]
8 [8, 7, 5, 4, 2, 1]
পাঁচটি পরীক্ষা পাঁচ রকম ফল দেয়। {1, …, 5}-এ mod 6-এর গুণ বদ্ধ নয়: 2 · 3 = 6 ≡ 0, যা সেটে নেই। mod 5-এর বিয়োগ বদ্ধ, কিন্তু সংযোজন নিয়ম ভাঙে, তাই কোড সেখানেই থামে। ℤ6-এ গুণে একক 1 আছে, কিন্তু 0, 2, 3, 4-এর inverse নেই। ℤ9*-এর Cayley table-এর ছয়টি সারির প্রতিটিতে 1, 2, 4, 5, 7, 8 ঠিক একবার করে, উপপাদ্য ২.৩ মেনে। সারি 2-এ 1 আছে কলাম 5-এ: 2 · 5 = 10 ≡ 1, অর্থাৎ 2−1 = 5. Cayley table থেকে inverse পড়ার এটাই উপায়: সারিতে 1 খুঁজুন।
৩ · তিনটি পরিবার — ℤn, বর্গের symmetry আর permutation
সসীম group-এর তিনটি পরিবার বারবার ফিরে আসে। প্রথমটি দেখেছেন: ℤn (যোগ) আর ℤn* (গুণ), দুটিই abelian.
দ্বিতীয়: dihedral group. একটি বর্গকে তার জায়গায় ফিরিয়ে আনে এমন নড়াচড়া ৮টি: 0°, 90°, 180°, 270° ঘোরানো আর চারটি অক্ষ বরাবর উল্টানো। দুটি পরপর করাই অপারেশন। পর্ব ৫১-এ দেখেছেন এরা একটি group D4, আর সাধারণভাবে নিয়মিত n-ভুজের Dn-এর আকার 2n. এটি abelian নয়: আগে 90° ঘুরিয়ে তারপর উল্লম্ব অক্ষে উল্টানো আর আগে উল্টে তারপর ঘোরানো আলাদা ফল দেয়। ঘোরানো r আর একটি উল্টানো s হলে সম্পর্কটি sr = r−1s.
তৃতীয়: symmetric group Sn. {1, …, n}-এর সব permutation, অর্থাৎ নিজের ওপর সব bijection, অপারেশন composition (পর্ব ১৬)। দুটি bijection-এর composition আবার bijection (closure), ফাংশনের composition সবসময় সংযোজনীয়, একক হলো identity ফাংশন, আর inverse হলো উল্টো ফাংশন। আকার n!. Permutation-কে cycle-এ লেখা হয় (পর্ব ৫০): (1 2 3) মানে 1 → 2, 2 → 3, 3 → 1.
S3-এ r = (1 2 3) আর s = (2 3) নিন। “আগে s, তারপর r” করলে 1 → 1 → 2, 2 → 3 → 1, 3 → 2 → 3, অর্থাৎ (1 2). “আগে r, তারপর s” করলে 1 → 2 → 3, 2 → 3 → 2, 3 → 1 → 1, অর্থাৎ (1 3). ফল আলাদা, তাই S3 abelian নয়। আকার 6, আর এটিই সবচেয়ে ছোট non-abelian group (৫ বা তার কম আকারের প্রতিটি group abelian; এর প্রমাণ এই পর্বের Lagrange থেকে কিছুটা আসে, পুরোটা এখানে বাদ)। বাজারঘরের ভাষায়: একটি প্যাকেট আগে উল্টে তারপর ঘোরানো আর আগে ঘুরিয়ে তারপর উল্টানো এক জিনিস নয়, তাই গুদামের রোবটকে নির্দেশের ক্রম ঠিক রাখতে হয়।
সতর্কতা: “ab” লিখলে কোনটি আগে ঘটে, বই ভেদে আলাদা। এই পর্বে ফাংশনের মতো ডান থেকে পড়ি: (r ∘ s)(x) = r(s(x)), অর্থাৎ আগে s. কোনো সমাধান পড়ার সময় আগে নিয়মটি মিলিয়ে নিন, নইলে non-abelian group-এ উত্তর উল্টে যাবে।
৪ · Order, cyclic group আর generator
ak মানে a-কে k বার নিজের সঙ্গে গুণ (a0 = e, a−k = (a−1)k); যোগের group-এ একই জিনিসকে ka লেখা হয়। সাধারণ ঘাতের নিয়ম amak = am+k আর (am)k = amk সংযোজন নিয়ম থেকেই আসে।
a ∈ G-এর order ord(a) হলো সবচেয়ে ছোট ধনাত্মক k, যাতে ak = e; এমন k না থাকলে order অসীম। ℤn*-এ এটি পর্ব ২৪-এর ordn(a). “Group-এর order” |G| আর “উপাদানের order” ord(a) আলাদা জিনিস; Lagrange এ দুটিকে জুড়বে।
(ক) সসীম group-এ প্রতিটি উপাদানের order সসীম। (খ) ord(a) = d হলে am = e ⇔ d ∣ m. (গ) তখন ⟨a⟩ = {e, a, a2, …, ad−1}-এর d-টি উপাদান সব আলাদা।
- (ক) a, a2, a3, … সবাই সসীম G-তে, তাই কোনো i < j-তে ai = aj. দুই দিকে a−i গুণ করলে aj−i = e, আর j − i ধনাত্মক। — pigeonhole
- (খ) m = qd + r লিখুন, 0 ≤ r < d (পর্ব ২০-এর division algorithm). am = (ad)qar = ar. তাই am = e ⇔ ar = e ⇔ r = 0, কারণ d-এর চেয়ে ছোট কোনো ধনাত্মক ঘাতে e আসে না। — ভাগশেষ
- (গ) 0 ≤ i < j ≤ d − 1-এ ai = aj হলে aj−i = e, অথচ 0 < j − i < d: order-এর সংজ্ঞার বিরোধ। ∎
G cyclic, যদি এমন g থাকে যে G = ⟨g⟩ = {gk : k ∈ ℤ}. তখন g একটি generator. সসীম G-তে g generator ⇔ ord(g) = |G| (উপপাদ্য ৪.২-এর গ থেকে)।
(ℤ, +) cyclic, generator 1 আর −1. ℤn cyclic, generator 1. প্রতিটি cyclic group abelian, কারণ gigj = gi+j = gjgi. কিন্তু প্রতিটি abelian group cyclic নয়: ℤ8* = {1, 3, 5, 7}-এ 32 = 9 ≡ 1, 52 = 25 ≡ 1, 72 = 49 ≡ 1. কোনো উপাদানের order 4 নয়, তাই কোনো generator নেই। ℤn-এর কোন উপাদান generator, তার একটি পরিষ্কার উত্তর আছে।
(ℤn, +)-এ k-এর order n / gcd(k, n). তাই k একটি generator ⇔ gcd(k, n) = 1, অর্থাৎ k হলো ℤn*-এর একটি unit; generator-এর সংখ্যা φ(n).
- d = gcd(k, n). যোগের group-এ “k-এর m-গুণ = 0” মানে n ∣ mk. — ℤn-এ শূন্য
- n ∣ mk ⇔ (n/d) ∣ m(k/d), আর gcd(n/d, k/d) = 1, তাই ⇔ (n/d) ∣ m. — Euclid-এর lemma, পর্ব ২১
- সবচেয়ে ছোট ধনাত্মক এমন m হলো n/d, তাই ord(k) = n/d. — সংজ্ঞা ৪.১
- k generator ⇔ ord(k) = n ⇔ d = 1. 0 থেকে n − 1-এর মধ্যে এমন k ঠিক φ(n)টি। ∎ — সংজ্ঞা ৪.৩
ℤ12-এ generator 1, 5, 7, 11 (φ(12) = 4), আর যেমন ord(8) = 12/gcd(8, 12) = 3: 8, 16 ≡ 4, 24 ≡ 0. গুণের group-এ উত্তরটি কঠিন। পর্ব ২৪-এ দেখেছেন মৌলিক p-এ ℤp*-এর সবসময় একটি primitive root আছে, অর্থাৎ ℤp* cyclic; সেই প্রমাণ এখানে বাদ। কিন্তু কোনটি generator, তার কোনো সরল সূত্র জানা নেই; ঘাত গুনে দেখতে হয়। নিচের stepper সবচেয়ে ছোট উদাহরণে দুটি কাজই করে।
1G = {1, 2, 3, 4}, ab mod 52সারি 1: 1·b3সারি 2: 2·b4সারি 3: 3·b5সারি 4: 4·b64-এর ঘাত72 আর 3-এর ঘাত
| সারি 1 | |
| সারি 2 | |
| সারি 3 | |
| সারি 4 | |
| ঘাত |
- সেট আর অপারেশন। 5 মৌলিক, তাই ℤ5* = {1, 2, 3, 4}, আকার φ(5) = 4. অপারেশন: গুণ করে 5 দিয়ে ভাগশেষ।
- সারি 1. 1 · b = b, তাই সারিটি কলামের শিরোনামের হুবহু কপি: 1 2 3 4. এটাই একক উপাদানের চিহ্ন।
- সারি 2. 2, 4, 6 ≡ 1, 8 ≡ 3: সারি 2 4 1 3. কলাম 3-এ 1, তাই 2−1 = 3.
- সারি 3. 3, 6 ≡ 1, 9 ≡ 4, 12 ≡ 2: সারি 3 1 4 2. কলাম 2-এ 1, তাই 3−1 = 2, যা অনন্য inverse-এর সঙ্গে মেলে।
- সারি 4. 4, 8 ≡ 3, 12 ≡ 2, 16 ≡ 1: সারি 4 3 2 1. প্রতিটি সারি আর কলামে 1, 2, 3, 4 ঠিক একবার: Latin square (উপপাদ্য ২.৩)। Table নিজের কর্ণ বরাবর প্রতিসম, তাই group abelian.
- 4 কি generator? 41 = 4, 42 = 16 ≡ 1. Order 2, তাই ⟨4⟩ = {1, 4}, পুরো group নয়। খেয়াল করুন 2 ∣ 4.
- 2 আর 3. 2-এর ঘাত 2, 4, 8 ≡ 3, 16 ≡ 1: চারটিই আলাদা, order 4 = |G|, তাই 2 একটি generator (5-এর primitive root). 3-এর ঘাত 3, 4, 2, 1, তাই 3-ও। Generator ঠিক দুটি; §৮-এ দেখবেন কেন সংখ্যাটি φ(4) = 2.
৫ · Subgroup — group-এর ভেতরের group
G-এর একটি উপসেট H, যা G-এর একই অপারেশনে নিজেই একটি group, তাকে G-এর subgroup বলে; লেখা হয় H ≤ G. প্রতিটি group-এর অন্তত দুটি subgroup: {e} আর G নিজে।
⟨a⟩ সবসময় একটি subgroup, একে a-এর তৈরি cyclic subgroup বলে। ℤ12-এ ⟨4⟩ = {0, 4, 8}, ℤ5*-এ ⟨4⟩ = {1, 4}. চারটি axiom আবার একে একে না দেখে subgroup চেনার একটি সংক্ষিপ্ত পরীক্ষা আছে।
(ক) H ⊆ G অশূন্য, আর a, b ∈ H হলে ab ∈ H ও a−1 ∈ H; তাহলে H ≤ G. (খ) G সসীম হলে শুধু “অশূন্য আর ab ∈ H” যথেষ্ট।
- (ক) সংযোজন নিয়ম G-তে সব উপাদানে খাটে, তাই H-এর উপাদানেও। Closure ধরে নেওয়া আছে। — উত্তরাধিকার
- H অশূন্য, তাই কোনো a ∈ H আছে; a−1 ∈ H, আর closure থেকে aa−1 = e ∈ H. Inverse শর্তে ধরা আছে, তাই H একটি group. — একক H-এ আছে
- (খ) a ∈ H হলে closure থেকে a, a2, a3, … সবাই H-এ। G সসীম, তাই d = ord(a) সসীম (উপপাদ্য ৪.২)। d = 1 হলে a = e = a−1. নইলে a−1 = ad−1, কারণ a · ad−1 = ad = e, আর ad−1 ∈ H. তাই inverse শর্ত আপনা থেকেই মেলে, আর (ক) প্রযোজ্য। ∎ — ঘাতের চক্র
(খ)-তে “সসীম” শর্তটি বাদ দেওয়া যায় না: (ℤ, +)-এ ℕ = {0, 1, 2, …} অশূন্য আর যোগে বদ্ধ, অথচ subgroup নয়, কারণ 1-এর inverse −1 নেই। অসীম group-এ তাই inverse-এর শর্ত আলাদা করে দেখতে হয়।
ℤ12-এর subgroup কয়টি? প্রতিটি d ∣ 12-এর জন্য ⟨d⟩, অর্থাৎ ছয়টি: ⟨1⟩, ⟨2⟩, ⟨3⟩, ⟨4⟩, ⟨6⟩, ⟨0⟩ = {0}, আকার 12, 6, 4, 3, 2, 1. আর কোনো subgroup নেই, কারণ cyclic group-এর প্রতিটি subgroup cyclic: H ≠ {0} হলে H-এর সবচেয়ে ছোট ধনাত্মক উপাদান m নিন; H-এর যেকোনো x-কে x = qm + r লিখলে r = x − qm ∈ H আর 0 ≤ r < m, তাই r = 0, অর্থাৎ H = ⟨m⟩. প্রতিটি আকার 12-এর একটি ভাজক। এটাই পরের অংশের বড় উপপাদ্যের পূর্বাভাস।
৬ · Coset আর Lagrange-এর উপপাদ্য
ধারণাটি একটি ছবিতে ধরা যায়। ℤ12-কে ঘড়ির ১২টি ঘর ভাবুন, আর H = ⟨4⟩ = {0, 4, 8}. H-এর তিনটি ঘর একটি সমবাহু ত্রিভুজ। এই ত্রিভুজকে এক ঘর ঘোরালে {1, 5, 9}, দুই ঘর ঘোরালে {2, 6, 10}, তিন ঘর ঘোরালে {3, 7, 11}. চারটি ত্রিভুজ মিলে ঘড়ির ১২টি ঘর ঠিক একবার করে ঢাকে।
ℤ12-এ subgroup ⟨4⟩-এর চারটি coset
একই রঙের তিনটি ঘর একটি coset: নীল 0 + H, সবুজ 1 + H, কমলা 2 + H, বেগুনি 3 + H. প্রতিটি coset H-এর ঘোরানো কপি, আকার 3; চারটি মিলে ১২টি ঘর।
H ≤ G আর a ∈ G হলে aH = {ah : h ∈ H} হলো H-এর একটি বাম coset (যোগের group-এ a + H). আলাদা বাম coset-এর সংখ্যাকে G-এ H-এর index [G : H] বলে।
Coset আসলে একটি equivalence relation-এর class (পর্ব ৫৫)। G-তে a ~ b বলুন, যদি a−1b ∈ H. (১) Reflexive: a−1a = e ∈ H. (২) Symmetric: a−1b ∈ H হলে তার inverse b−1a ∈ H. (৩) Transitive: a−1b আর b−1c দুটিই H-এ থাকলে গুণফল a−1c ∈ H. আর b ~ a ⇔ a−1b = h কোনো h ∈ H-এর জন্য ⇔ b = ah ⇔ b ∈ aH. তাই a-এর equivalence class ঠিক aH. পর্ব ৫৫-এর মৌলিক উপপাদ্য বলে class-গুলো G-এর একটি partition: দুটি coset হয় হুবহু এক, নয়তো সম্পূর্ণ আলাদা। ℤn-এ H = ⟨d⟩ হলে a ~ b মানে b − a ∈ ⟨d⟩, অর্থাৎ a ≡ b (mod d): coset-গুলো mod d-এর ভাগশেষ-শ্রেণি।
G সসীম group আর H ≤ G হলে |H| ভাগ করে |G|-কে; আরও নির্দিষ্টভাবে
|G| = [G : H] · |H|.
- বাম coset-গুলো G-এর একটি partition, কারণ এগুলো ~-এর equivalence class. — পর্ব ৫৫
- প্রতিটি coset aH-এর আকার |H|: ফাংশন f(h) = ah, H থেকে aH-এ, সংজ্ঞা অনুযায়ী onto; আর ah = ah′ হলে cancellation থেকে h = h′, তাই one-to-one. Bijection, তাই |aH| = |H|. — উপপাদ্য ২.২, পর্ব ১৬
- G হলো [G : H]টি পরস্পর-বিচ্ছিন্ন সেটের union, প্রতিটির আকার |H|. যোগের নিয়মে |G| = [G : H] · |H|. ∎ — পর্ব ৩১-এর যোগের নিয়ম
প্রমাণটি তিনটি পুরোনো হাতিয়ার জোড়া দেয়: equivalence class-এর partition, cancellation থেকে bijection, আর যোগের নিয়ম। প্রথম stepper ঘড়ির ছবিটি ধাপে ধাপে বানায়, দ্বিতীয়টি একই প্রমাণ গুণের একটি group-এ চালায়।
1H = ⟨4⟩ = {0, 4, 8}21 + H32 + H43 + H54 + H, 5 + H ?612 = 4 × 3
| নতুন coset | |
| ঢাকা ঘর | |
| বাকি ঘর |
- Subgroup. 4-এর গুণিতক mod 12: 4, 8, 12 ≡ 0. তাই H = ⟨4⟩ = {0, 4, 8}, আকার 3 = ord(4). প্রথম coset 0 + H = H নিজেই।
- দ্বিতীয় coset. ঢাকা পড়েনি এমন সবচেয়ে ছোট ঘর 1. 1 + H = {1, 5, 9}: H-এর প্রতিটি সংখ্যায় 1 যোগ। আকার আবার 3, আর H-এর সঙ্গে কোনো মিল নেই।
- তৃতীয় coset. বাকির সবচেয়ে ছোট 2. 2 + H = {2, 6, 10}. এখন ৯টি ঘর ঢাকা।
- চতুর্থ coset. 3 + H = {3, 7, 11}. সব ১২টি ঘর ঢাকা পড়ল, কোনোটি দুবার নয়: partition.
- প্রতিনিধি বদলালে? 4 + H = {4, 8, 0}, যা 0 + H-এর সঙ্গে হুবহু এক; 5 + H = {5, 9, 1} = 1 + H. নিয়ম: a + H = b + H ⇔ a − b ∈ H, যেমন 5 − 1 = 4 ∈ H. একই coset-এর অনেক নাম থাকতে পারে, কিন্তু দুটি আলাদা coset কখনো আংশিক মেলে না।
- গণনা। চারটি coset, প্রতিটির আকার 3: 12 = 4 × 3, অর্থাৎ |G| = [G : H] · |H|. Coset-গুলো mod 4-এর চারটি ভাগশেষ-শ্রেণি: x + H-এর সব সংখ্যা 4 দিয়ে ভাগে একই ভাগশেষ দেয়।
1H = ⟨3⟩ = {1, 3, 9}22H34H47H5h → 2h: bijection612 = 4 × 3
| coset | |
| হিসাব | |
| বাকি |
- Subgroup. G = ℤ13*, |G| = 12. 3-এর ঘাত: 3, 9, 27 ≡ 1. তাই H = ⟨3⟩ = {1, 3, 9}, আকার 3. প্রথম coset 1H = H.
- প্রথম নতুন coset. H-এ নেই এমন সবচেয়ে ছোট 2. 2H = {2 · 1, 2 · 3, 2 · 9} = {2, 6, 18 ≡ 5}. প্রমাণের ধাপ ১: এটি ~-এর একটি নতুন class.
- আরেকটি। বাকির সবচেয়ে ছোট 4: 4H = {4, 12, 36 ≡ 10}. আগের দুটি coset-এর সঙ্গে একটি উপাদানও মেলে না; partition-এর নিয়মে মেলার কথাও নয়।
- শেষ coset. বাকি 7, 8, 11. 7H = {7, 21 ≡ 8, 63 ≡ 11}: ঠিক বাকি তিনটি। চারটি coset মিলে G, কোনো উপাদান দুবার নয়।
- সমান আকার কেন। প্রমাণের ধাপ ২: h ↦ 2h নিয়মে 1 → 2, 3 → 6, 9 → 5. 2 · h = 2 · h′ হলে cancellation থেকে h = h′, তাই কোনো দুটি h একই জায়গায় যায় না। তাই প্রতিটি coset-এ ঠিক |H| = 3টি উপাদান, অঙ্ক না কষেই।
- উপসংহার। ধাপ ৩: 12 = 4 × 3, তাই 3 ∣ 12, আর index [G : H] = 4. ফল হিসেবে ord(3) = 3 ভাগ করে 12-কে, আর 312 = (33)4 ≡ 1 (mod 13): এটাই §৭-এ Fermat-এর উপপাদ্যের রূপ নেবে।
নিচের কোড ℤ12-এর সব 212 = 4096টি উপসেটে উপপাদ্য ৫.২(খ) চালিয়ে subgroup খোঁজে, coset গোনে, তারপর ℤ13*-এ order, generator আর Lagrange মেলায়।
from itertools import combinations
from math import gcd
n = 12
def is_subgroup(H): # finite test: nonempty and closed
return 0 in H and all((a + b) % n in H for a in H for b in H)
subs = [set(H) for k in range(1, n + 1)
for H in combinations(range(n), k) if is_subgroup(set(H))]
print("Z12 has", len(subs), "subgroups (checked all 4096 subsets):")
for H in subs:
d = min(H - {0}, default=n) # smallest positive element
print(f" size {len(H):2} = <{d % n}> {sorted(H)} 12/size = {n // len(H)}")
def cosets(G, H, op):
left, out = list(G), []
while left:
c = sorted({op(left[0], h) for h in H})
out.append(c); left = [x for x in left if x not in c]
return out
H = {0, 4, 8}
print("cosets of <4>:", cosets(range(12), H, lambda a, h: (a + h) % 12))
p = 13
U = list(range(1, p))
def order(a):
k, x = 1, a
while x != 1:
x, k = x * a % p, k + 1
return k
print("orders in Z13*:", {a: order(a) for a in U})
print("generators:", [a for a in U if order(a) == p - 1])
H = {pow(3, k, p) for k in range(3)}
C = cosets(U, H, lambda a, h: a * h % p)
print("cosets of <3> =", sorted(H), ":", C)
print("Lagrange:", len(U), "=", len(C), "x", len(H))
print("a^12 = 1 for all a:", all(pow(a, 12, p) == 1 for a in U))আসল আউটপুট (ব্রাউজারের Python):
Z12 has 6 subgroups (checked all 4096 subsets):
size 1 = <0> [0] 12/size = 12
size 2 = <6> [0, 6] 12/size = 6
size 3 = <4> [0, 4, 8] 12/size = 4
size 4 = <3> [0, 3, 6, 9] 12/size = 3
size 6 = <2> [0, 2, 4, 6, 8, 10] 12/size = 2
size 12 = <1> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 12/size = 1
cosets of <4>: [[0, 4, 8], [1, 5, 9], [2, 6, 10], [3, 7, 11]]
orders in Z13*: {1: 1, 2: 12, 3: 3, 4: 6, 5: 4, 6: 12, 7: 12, 8: 4, 9: 3, 10: 6, 11: 12, 12: 2}
generators: [2, 6, 7, 11]
cosets of <3> = [1, 3, 9] : [[1, 3, 9], [2, 5, 6], [4, 10, 12], [7, 8, 11]]
Lagrange: 12 = 4 x 3
a^12 = 1 for all a: True
ব্রুট ফোর্স ঠিক ছয়টি subgroup পায়, প্রতিটি ⟨d⟩ যেখানে d ∣ 12, আর প্রতিটির আকার 12-এর ভাজক; শেষ কলামটি index. ℤ12-এর জন্য 4096টি উপসেট দেখা সহজ, কিন্তু উপসেটের সংখ্যা 2n হারে বাড়ে, তাই বড় group-এ এই পথ অচল; তখন উপপাদ্যই একমাত্র ভরসা। ℤ13*-এ order-গুলো 1, 2, 3, 4, 6, 12: সবাই 12-এর ভাজক, যেমন Lagrange-এর ফল (§৭) দাবি করে। Generator চারটি, 2, 6, 7, 11, অর্থাৎ φ(12) = 4টি; §৮-এ দেখবেন কেন। ⟨3⟩-এর coset stepper-এর চারটি সেটই (কোড প্রতিটি সেট সাজিয়ে ছাপে)। শেষ লাইন Fermat: 12টি a-এর প্রতিটিতে a12 ≡ 1.
৭ · Lagrange-এর ফল — Fermat, Euler আর মৌলিক আকারের group
Lagrange-এর আসল শক্তি তার ফলগুলোয়। G সসীম, |G| = n, আর a ∈ G যেকোনো উপাদান।
(ক) ord(a) ∣ |G|. (খ) a|G| = e.
প্রমাণ: ⟨a⟩ একটি subgroup আর তার আকার ord(a) (উপপাদ্য ৪.২-এর গ), তাই Lagrange থেকে ord(a) ∣ n. n = ord(a) · m লিখলে an = (aord(a))m = em = e. ∎
gcd(a, n) = 1 হলে aφ(n) ≡ 1 (mod n) (Euler-এর উপপাদ্য)। বিশেষত p মৌলিক আর p ∤ a হলে ap−1 ≡ 1 (mod p) (Fermat-এর ছোট উপপাদ্য)।
প্রমাণ: a mod n হলো ℤn*-এর উপাদান, আর |ℤn*| = φ(n). ফল ৭.১(খ) প্রয়োগ করুন। p মৌলিক হলে φ(p) = p − 1. ∎ পর্ব ২৪-এ এই দুটি উপপাদ্য গুণফল সাজিয়ে আলাদা করে প্রমাণ করেছিলেন, আর “order ভাগ করে φ(n)-কে”ও আলাদা উপপাদ্য ছিল। Group-এর দৃষ্টিতে তিনটিই একটি সাধারণ সত্যের বিশেষ রূপ: সংখ্যাতত্ত্বের কৌশল আসলে ℤn* নামের একটি group-এর গঠন।
|G| = p মৌলিক হলে G cyclic, আর e ছাড়া প্রতিটি উপাদান একটি generator.
- a ≠ e নিন। ord(a) ∣ p, তাই ord(a) = 1 বা p. — ফল ৭.১
- ord(a) = 1 মানে a = e, যা বাদ। তাই ord(a) = p = |G|, অর্থাৎ ⟨a⟩ = G. ∎ — সংজ্ঞা ৪.৩
অর্থাৎ ৫, ৭ বা ১৩ আকারের group গঠনে একটিই: ℤp-এর মতো (§৮-এ isomorphism-এর ভাষায়)। আরেকটি ফল: মৌলিক আকারের group-এর subgroup শুধু {e} আর G.
উল্টোটা কি সত্য? d ∣ |G| হলেই কি d আকারের subgroup আছে? Cyclic group-এ হ্যাঁ: প্রতিটি d ∣ n-এর জন্য ℤn-এ ঠিক একটি, ⟨n/d⟩. সাধারণভাবে না। সবচেয়ে ছোট পাল্টা-উদাহরণ alternating group A4: S4-এর জোড় permutation-গুলো, আকার 12, অথচ তার কোনো 6 আকারের subgroup নেই। তবে মৌলিক ভাজকে আংশিক উল্টোটা সত্য: Cauchy-র উপপাদ্য বলে মৌলিক p ∣ |G| হলে p order-এর একটি উপাদান আছে (প্রমাণ এখানে বাদ)।
নিচের কোড S4-এর ২৪টি permutation-কে cycle type অনুযায়ী ভাগ করে। Order হলো cycle-গুলোর দৈর্ঘ্যের lcm: দৈর্ঘ্য 2 আর 3-এর দুটি আলাদা cycle থাকলে 6 বার পরে দুটিই একসঙ্গে শুরুর অবস্থায় ফেরে (পর্ব ৫০-এর cycle). তারপর A4-এর পাল্টা-উদাহরণটি ব্রুট ফোর্সে যাচাই করে।
from itertools import permutations, combinations
from collections import Counter
from math import lcm
def cycles(p): # p[i] = image of i
seen, out = set(), []
for i in range(len(p)):
if i not in seen:
c, j = [], i
while j not in seen:
seen.add(j); c.append(j); j = p[j]
out.append(len(c))
return tuple(sorted(out, reverse=True))
def compose(p, q): # first q, then p
return tuple(p[q[i]] for i in range(len(q)))
S4 = list(permutations(range(4)))
table = Counter(cycles(p) for p in S4)
print("cycle type count order")
for t, c in sorted(table.items(), key=lambda kv: -kv[1]):
print(f"{str(t):12} {c:5} {lcm(*t):5}")
orders = Counter(lcm(*cycles(p)) for p in S4)
print("orders:", dict(sorted(orders.items())), "| all divide 24:",
all(24 % o == 0 for o in orders))
r, s = (1, 2, 0, 3), (0, 2, 1, 3) # a 3-cycle and a swap
print("r then s:", compose(s, r), " s then r:", compose(r, s))
even = [p for p in S4 if sum(L - 1 for L in cycles(p)) % 2 == 0]
e = tuple(range(4))
found = 0
for rest in combinations([p for p in even if p != e], 5):
H = set(rest) | {e}
if all(compose(a, b) in H for a in H for b in H):
found += 1
print("A4 has", len(even), "elements; subgroups of order 6:", found)আসল আউটপুট (ব্রাউজারের Python):
cycle type count order
(3, 1) 8 3
(2, 1, 1) 6 2
(4,) 6 4
(2, 2) 3 2
(1, 1, 1, 1) 1 1
orders: {1: 1, 2: 9, 3: 8, 4: 6} | all divide 24: True
r then s: (2, 1, 0, 3) s then r: (1, 0, 2, 3)
A4 has 12 elements; subgroups of order 6: 0
পাঁচটি cycle type-এর গণনা 8 + 6 + 6 + 3 + 1 = 24 = 4!. Order-গুলো 1, 2, 3, 4, সবাই 24-এর ভাজক, যদিও 24-এর ভাজক 6, 8, 12, 24 order-এর কোনো উপাদান নেই: Lagrange শুধু বলে order কোথায় থাকতে পারে, সব ভাজকে উপাদান থাকবে এমন নয়। কোড শূন্য থেকে গোনে, তাই (1, 2, 0, 3) মানে 0 → 1 → 2 → 0, অর্থাৎ পাঠ্যের (1 2 3). দুই ক্রমের composition আলাদা: (2, 1, 0, 3) হলো 0 আর 2-এর অদলবদল আর (1, 0, 2, 3) হলো 0 আর 1-এর, ঠিক §৩-এর হাতের হিসাবের (1 3) আর (1 2). শেষে A4-এর e-সহ সব C(11, 5) = 462টি ছয়-উপাদানের উপসেটের একটিও বদ্ধ নয় (উপপাদ্য ৫.২-এর খ অনুযায়ী সসীম ক্ষেত্রে closure-ই যথেষ্ট ছিল), তাই Lagrange-এর উল্টোটা সত্যিই মিথ্যা।
৮ · Homomorphism, isomorphism আর প্রয়োগ
ℤ5*-এর Cayley table আর ℤ4-এর যোগের table দেখতে আলাদা, কিন্তু 2k ↔ k জোড়া মেলালে একটি অন্যটির হুবহু অনুবাদ। এই “গঠন-রক্ষাকারী অনুবাদ”-এর নাম homomorphism.
Group (G, ∗) থেকে (K, ⋆)-এ ফাংশন f একটি homomorphism, যদি সব a, b-তে f(a ∗ b) = f(a) ⋆ f(b). তার kernel ker f = {a ∈ G : f(a) = eK}. f bijection-ও হলে তা একটি isomorphism, আর তখন লেখা হয় G ≅ K: দুটি group শুধু নামে আলাদা।
- f(eG) = f(eGeG) = f(eG)f(eG); K-তে cancellation করলে f(eG) = eK. — উপপাদ্য ২.২
- f(a)f(a−1) = f(aa−1) = eK, তাই f(a−1) = f(a)−1. — inverse অনন্য
- ker f একটি subgroup: e ∈ ker f; a, b ∈ ker f হলে f(ab) = eKeK = eK আর f(a−1) = eK−1 = eK; উপপাদ্য ৫.২(ক) প্রয়োগ করুন। ∎ — subgroup test
উদাহরণ: f: ℤ12 → ℤ4, f(x) = x mod 4. 4 ∣ 12 বলে mod 12-এ যোগ করে তারপর mod 4 নেওয়া আর সরাসরি mod 4-এ যোগ করা এক, তাই f একটি homomorphism; ker f = {0, 4, 8} = ⟨4⟩, §৬-এর সেই subgroup, আর f-এর একই মানের উপাদানগুলো ঠিক তার coset. কিন্তু x ↦ x mod 5 ℤ12 থেকে homomorphism নয়: 7 + 5 = 12 ≡ 0, অথচ 2 + 0 = 2 ≢ 0 (mod 5).
n আকারের প্রতিটি cyclic group G = ⟨g⟩ ℤn-এর isomorphic, আর f(k) = gk একটি isomorphism.
প্রমাণের রূপরেখা: (১) f সুসংজ্ঞায়িত (well-defined): k ≡ k′ (mod n) হলে n ∣ k − k′, আর ord(g) = n, তাই উপপাদ্য ৪.২(খ) থেকে gk−k′ = e, অর্থাৎ gk = gk′. (২) Homomorphism: f(k + m) = gk+m = gkgm. (৩) Bijection: g0, …, gn−1 সব আলাদা (উপপাদ্য ৪.২-এর গ) আর এরাই পুরো G. ∎ তাই ℤ13* ≅ ℤ12, আর ℤ13*-এর generator হলো gk, যেখানে k ℤ12-এর generator: উপপাদ্য ৪.৪ অনুযায়ী ঠিক φ(12) = 4টি, §৬-এর কোড যা পেয়েছিল। Isomorphism order রক্ষা করে, তাই ℤ8* (সব order ≤ 2) ℤ4-এর isomorphic হতে পারে না। ℤ8*-এর গঠনের group-কে Klein four-group বলে।
from itertools import permutations
def is_hom(f, G, H, opG, opH): # f(a*b) = f(a)*f(b) for all a, b
return all(f[opG(a, b)] == opH(f[a], f[b]) for a in G for b in G)
Z4 = range(4)
add4 = lambda a, b: (a + b) % 4
U5 = [1, 2, 3, 4]; mul5 = lambda a, b: a * b % 5
isos = []
for img in permutations(U5): # every bijection Z4 -> Z5*
f = dict(zip(Z4, img))
if is_hom(f, Z4, U5, add4, mul5):
isos.append(img)
print("isomorphisms Z4 -> Z5*:", isos)
print("rule k -> 2^k mod 5:", tuple(pow(2, k, 5) for k in Z4))
def orders(G, op, e):
out = []
for a in G:
k, x = 1, a
while x != e:
x, k = op(x, a), k + 1
out.append(k)
return sorted(out)
U8 = [1, 3, 5, 7]
print("orders in Z4 :", orders(Z4, add4, 0))
print("orders in Z8*:", orders(U8, lambda a, b: a * b % 8, 1))
f = {x: x % 4 for x in range(12)} # Z12 -> Z4, reduce mod 4
print("x mod 4 is a homomorphism:",
is_hom(f, range(12), Z4, lambda a, b: (a + b) % 12, add4))
ker = [x for x in range(12) if f[x] == 0]
print("kernel:", ker, " image size:", len(set(f.values())),
" 12 / |kernel| =", 12 // len(ker))
g = {x: x % 5 for x in range(12)}
print("x mod 5 from Z12 is a homomorphism:",
is_hom(g, range(12), range(5), lambda a, b: (a + b) % 12,
lambda a, b: (a + b) % 5))আসল আউটপুট (ব্রাউজারের Python):
isomorphisms Z4 -> Z5*: [(1, 2, 4, 3), (1, 3, 4, 2)]
rule k -> 2^k mod 5: (1, 2, 4, 3)
orders in Z4 : [1, 2, 4, 4]
orders in Z8*: [1, 2, 2, 2]
x mod 4 is a homomorphism: True
kernel: [0, 4, 8] image size: 4 12 / |kernel| = 4
x mod 5 from Z12 is a homomorphism: False
4! = 24টি bijection-এর মধ্যে ঠিক দুটি isomorphism: k ↦ 2k আর k ↦ 3k, অর্থাৎ ℤ4-এর generator 1-কে ℤ5*-এর কোন generator-এ পাঠাবেন, সেই পছন্দ; stepper-এর দুটি generator এখানে ফিরে এল। প্রথম isomorphism-এর উল্টো ফাংশন, 2k থেকে k, হলো base 2-এ discrete logarithm (পর্ব ২৯): ছোট group-এ টেবিল দেখে পড়া যায়, বড় group-এ তা কঠিন বলে বিশ্বাস করা হয়। ℤ4 আর ℤ8*-এর order-তালিকা আলাদা, তাই isomorphic নয়। শেষ তিন লাইন kernel-এর উদাহরণ: kernel ⟨4⟩, image-এ 4টি উপাদান, আর 12/3 = 4. এই সমতা কাকতালীয় নয়; “image ≅ G/kernel” নামের প্রথম isomorphism উপপাদ্য তা বলে, যা আরও গভীর বীজগণিতের বিষয়।
প্রয়োগ: key exchange, check digit আর symmetry
Diffie–Hellman: পর্ব ২৯-এর key exchange একটি cyclic group ⟨g⟩-এর ওপর চলে। Lagrange সেখানে নিরাপত্তার নকশা ঠিক করে: ℤp*-এর subgroup-এর আকার শুধু p − 1-এর ভাজক হতে পারে, আর p − 1-এর ছোট ভাজক থাকলে আক্রমণকারী ছোট subgroup-এ সমস্যাটি টুকরো করে সমাধান করতে পারে (পর্ব ২৯-এর Pohlig–Hellman). তাই বাস্তবের নকশা বড় মৌলিক আকারের subgroup বেছে নেয়। ছোট সংখ্যার “textbook” Diffie–Hellman শুধু বোঝার জন্য; আসল ব্যবস্থায় বড় মানসম্মত parameter আর যাচাই-করা library লাগে (সাইবার সিকিউরিটি কোর্সের পর্ব ১০)।
Check digit: পর্ব ২৬-এর mod 10 পদ্ধতিগুলো abelian group-এ চলে, আর সেখানে কিছু পাশাপাশি অদলবদল (transposition error) ধরা পড়ে না। J. Verhoeff ১৯৬৯ সালে non-abelian dihedral group D5 (আকার 10, তাই দশটি অঙ্কের জন্য উপযুক্ত) আর একটি অবস্থান-নির্ভর permutation ব্যবহার করে এমন পদ্ধতি দেন, যা সব একক-অঙ্কের ভুল আর সব পাশাপাশি অদলবদল ধরে বলে বর্ণিত। আমাদের scratch-এ একটি বাস্তবায়নে চার অঙ্কের সব ১০,০০০টি payload-এ পরীক্ষা করে একটিও ভুল ফসকায়নি; তবে আসল ব্যবহারের আগে মূল টেবিল প্রকাশিত উৎসে মিলিয়ে নিন।
Symmetry: Rubik's cube-এর সব বৈধ অবস্থা একটি group গঠন করে, যার আকার 43,252,003,274,489,856,000 বলে সুপরিচিত (প্রায় 4.3 × 1019; আমাদের scratch-এ 8! · 37 · 12! · 211 / 2 সূত্রে মেলানো)। অণুর symmetry, স্ফটিকের গঠন আর কম্পিউটার গ্রাফিক্সে ঘোরানোর হিসাবও group-এর ভাষায় লেখা হয়।
৯ · পরীক্ষার অঙ্ক আর একটি ভুল প্রমাণ
অঙ্ক ১: ℤ7*-এর order, generator আর subgroup
- |ℤ7*| = 6, তাই Lagrange অনুযায়ী order শুধু 1, 2, 3, 6 হতে পারে।
- ঘাত গুনে: ord(1) = 1, ord(2) = 3 (2, 4, 8 ≡ 1), ord(3) = 6, ord(4) = 3, ord(5) = 6, ord(6) = 2 (36 ≡ 1).
- Generator 3 আর 5, সংখ্যায় φ(6) = 2, উপপাদ্য ৮.২ আর ৪.৪ মেনে। Subgroup: {1}, {1, 6}, {1, 2, 4}, পুরো group; আকার 1, 2, 3, 6 (scratch-এ যাচাই করা)।
অঙ্ক ২: 72026 mod 15
- gcd(7, 15) = 1, তাই 7 ∈ ℤ15*, যার আকার φ(15) = 8. ফল ৭.১: 78 ≡ 1.
- 2026 = 8 · 253 + 2, তাই 72026 ≡ 72 = 49 ≡ 4 (mod 15). আসলে ord(7) = 4 (7, 4, 13, 1), তাতেও 2026 ≡ 2 (mod 4), একই উত্তর। Python-এর pow(7, 2026, 15) একই 4 দেয়।
অঙ্ক ৩: 15 আকারের group
(ক) এর subgroup কোন কোন আকারের হতে পারে? (খ) এতে কি 6 order-এর উপাদান থাকতে পারে?
- (ক) Lagrange: শুধু 15-এর ভাজক, 1, 3, 5, 15.
- (খ) না: ord(a) ∣ 15, আর 6 ∤ 15. ফলে কোনো 2 order-এর উপাদানও নেই, অর্থাৎ e ছাড়া কোনো উপাদান নিজের inverse নয়।
অঙ্ক ৪: বাজারঘরের ১৮ দিনের ডেলিভারি-চক্র
বাজারঘরের একটি ভ্যান ১৮টি এলাকা ঘুরে আবার শুরুতে ফেরে: এলাকাগুলো 0 থেকে 17, আর প্রতিদিন ভ্যানটি k ঘর সামনে এগোয় (ℤ18-এ যোগ)। (ক) k = 12 হলে ভ্যানটি কয়টি এলাকায় যায়, আর কোনগুলোতে? (খ) কোন কোন k দিলে ভ্যানটি সব ১৮টি এলাকায় পৌঁছায়? (গ) k = 12-এর বেলায় যে এলাকাগুলো বাদ পড়ে, সেগুলো কয়টি আলাদা ভ্যান দিয়ে ঢাকা যায়, যদি প্রতিটি ভ্যান একই নিয়মে চলে কিন্তু আলাদা এলাকা থেকে শুরু করে?
- (ক) উপপাদ্য ৪.৪: ord(12) = 18/gcd(12, 18) = 18/6 = 3. ভ্যানটি 0, 12, 24 ≡ 6, তারপর 18 ≡ 0-তে ফেরে: ⟨12⟩ = {0, 6, 12}.
- (খ) সব এলাকা মানে k একটি generator ⇔ gcd(k, 18) = 1: k = 1, 5, 7, 11, 13, 17, মোট φ(18) = 6টি।
- (গ) প্রতিটি ভ্যানের পথ ⟨12⟩-এর একটি coset, যেমন 1 থেকে শুরু করলে {1, 7, 13}. Lagrange: index 18/3 = 6, তাই শুরুর এলাকা 0, 1, 2, 3, 4, 5 নিয়ে ছয়টি ভ্যান সব এলাকা ঠিক একবার করে ঢাকে (scratch-এ যাচাই করা)।
প্রমাণের ভুল ধরুন: “Lagrange উল্টো দিকেও খাটে”
একজন লিখলেন: “A4-এর আকার 12, আর 6 ∣ 12. Lagrange-এর উপপাদ্য অনুযায়ী subgroup-এর আকার |G|-এর ভাজক, তাই A4-এর একটি 6 আকারের subgroup আছে।”
ভুল কোথায়: Lagrange বলে “H subgroup ⇒ |H| ∣ |G|”, কিন্তু যুক্তিটি ব্যবহার করেছে উল্টো দিক “d ∣ |G| ⇒ d আকারের subgroup আছে”, যা converse, আর তা সাধারণভাবে মিথ্যা। §৭-এর কোড A4-এর সব ৪৬২টি প্রার্থী উপসেট দেখে একটিও subgroup পায়নি। সঠিক কথা: cyclic group-এ প্রতিটি ভাজকে subgroup আছে, আর মৌলিক ভাজকে Cauchy একটি উপাদান দেয়; এর বাইরে প্রতিটি দাবি আলাদা প্রমাণ চায়।
আরও গভীরে: Sylow-এর ১৮৭২ সালের উপপাদ্যগুলো বলে, |G|-কে ভাগ করে এমন মৌলিক p-এর সবচেয়ে বড় ঘাতের আকারের subgroup সবসময় আছে, আর তাদের সংখ্যা নিয়েও কঠোর শর্ত দেয়; সসীম group-এর গঠন বোঝার এটি প্রধান হাতিয়ার। সসীম abelian group-এর পূর্ণ শ্রেণিবিভাগ জানা: প্রতিটি কয়েকটি cyclic group-এর গুণফল। সব সসীম “simple” group-এর শ্রেণিবিভাগ বিশ শতকের বহু গবেষকের হাজার হাজার পৃষ্ঠার কাজ, যা সাধারণত ২০০৪ সালের দিকে সম্পূর্ণ বলে গণ্য করা হয়। মডিউল ১২-এর পরের পর্বগুলো, পর্ব ৭১ “Ring আর field — modular ring, polynomial আর GF(2ⁿ)” আর পর্ব ৭২ “Error-correcting code — parity, Hamming code আর Hamming distance”, দুটি অপারেশনের কাঠামো আর group-এর ভেতরের code নিয়ে।
পরীক্ষা ও ইন্টারভিউতে: বিশ্ববিদ্যালয়, চাকরি বা ইন্টারভিউর পরীক্ষায় এই ধরনের প্রশ্ন প্রায়ই আসে:
- (ℤ, −) কেন group নয়? সংযোজন নিয়ম ভাঙে: (5 − 3) − 2 ≠ 5 − (3 − 2).
- ℤn-এ কয়টি generator? φ(n)টি, ঠিক gcd(k, n) = 1 এমন k.
- Lagrange-এর উপপাদ্য আর তার মূল ধারণা? |H| ∣ |G|, কারণ সমান আকারের coset-গুলো G-কে ভাগ করে।
- মৌলিক আকারের group কেমন? Cyclic, আর e ছাড়া প্রতিটি উপাদান generator.
- Lagrange থেকে Fermat? ℤp*-এর আকার p − 1, তাই ap−1 ≡ 1.
১০ · AI-এর যুগে — group-এর প্রমাণ আর হিসাব যাচাই
AI সহকারী group-এর সংজ্ঞা সাধারণত ঠিক বলে, কিন্তু প্রমাণে শর্ত বাদ দেয়, উল্টো দিক গুলিয়ে ফেলে আর mod-এর ঘাতে হিসাবের ভুল করে। কয়েকটি নিয়মিত ভুল আর ধরার উপায়:
| AI-এর ভুল | কীভাবে ধরবেন |
|---|---|
| Lagrange-এর converse ব্যবহার: “6 ∣ 12, তাই 6 আকারের subgroup আছে” | A4-এর পাল্টা-উদাহরণ মনে রাখুন; দাবিটি ছোট group-এ ব্রুট ফোর্সে চালান |
| অসীম group-এ শুধু closure দিয়ে subgroup দাবি | (ℤ, +)-এ ℕ-এর উদাহরণ দেখুন; inverse-এর শর্ত আলাদা করে খুঁজুন |
| “ℤn* সবসময় cyclic” বলা | ℤ8*-এ সব order গুনে দেখুন: কোনোটি 4 নয় |
| (ab)−1 = a−1b−1 লেখা, বা non-abelian group-এ ab = ba ধরে নেওয়া | S3-এ দুটি নির্দিষ্ট permutation দিয়ে দুই দিক গুনুন |
| বড় ঘাতে mod-এর হিসাবে ভুল, বা order আর |G| গুলিয়ে ফেলা | Python-এর pow(a, k, n) দিয়ে মেলান; order যে |G|-কে ভাগ করে তা দেখুন |
AI-এর কাছে group-এর প্রমাণ বা হিসাব চাইলে এমন কাঠামো দিন, যাতে প্রতিটি ধাপ আলাদা করে যাচাই করা যায়:
AI-এর উত্তর হাতে পেলে — যাচাইয়ের চেকলিস্ট
Group-এর দাবি যাচাই সাধারণত সহজ: ছোট group-এ সব উপাদান আর সব জোড়া ব্রুট ফোর্সে দেখা যায়। AI-এর একটি সাধারণ দাবি ১২ বা ২৪ উপাদানের group-এ পরীক্ষা করতে কয়েক মিলিসেকেন্ড লাগে, আর সেটাই প্রায়ই ভুল ধরার দ্রুততম পথ।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন, তারপর “→ উত্তর” চাপুন।
প্র ০১সমীকরণের মূল থেকে বিমূর্ত বীজগণিত: Lagrange, Galois আর Cayley কীভাবে group-এর ধারণায় পৌঁছালেন?
Group-এর ধারণা কোনো একজনের একদিনের আবিষ্কার নয়; প্রায় এক শতাব্দী ধরে বহুপদী সমীকরণের সমাধান খুঁজতে গিয়ে তা ধীরে ধীরে স্পষ্ট হয়। Joseph-Louis Lagrange ১৭৭০–১৭৭১ সালের দিকে প্রকাশিত “Réflexions sur la résolution algébrique des équations” নামের দীর্ঘ প্রবন্ধে প্রশ্ন করেন, দ্বিঘাত, ত্রিঘাত আর চতুর্ঘাত সমীকরণের সূত্রগুলো আসলে কেন কাজ করে। তিনি মূলগুলোর কোনো রাশি নিয়ে দেখেন, মূলগুলোর জায়গা বদলালে (permutation) সেই রাশি কয়টি আলাদা মান নেয়। প্রচলিত বিবরণ অনুযায়ী, তাঁর একটি পর্যবেক্ষণ ছিল এই সংখ্যা n!-কে ভাগ করে; আধুনিক ভাষায় এটি Sn-এর একটি subgroup-এর index, আর এ থেকেই উপপাদ্যটির নাম। তবে “group” শব্দ বা বিমূর্ত সংজ্ঞা তখন ছিল না, আর আধুনিক রূপের উপপাদ্য পরের প্রজন্মের গণিতবিদদের হাতে আসে।
Évariste Galois ১৮৩০-এর দশকের শুরুতে, মাত্র কুড়ি বছর বয়সে এক দ্বন্দ্বযুদ্ধে মারা যাওয়ার আগে, মূলগুলোর permutation-এর একটি বিশেষ সংগ্রহকে “groupe” নাম দেন এবং দেখান সমীকরণটি radical (মূলচিহ্ন) দিয়ে সমাধানযোগ্য কি না, তা সেই group-এর গঠনের ওপর নির্ভর করে। তাঁর লেখা কয়েক দশক পরে, ১৮৪৬ সালে Liouville-এর প্রকাশনায়, ব্যাপকভাবে পরিচিত হয় বলে উল্লেখ করা হয়। Augustin-Louis Cauchy ১৮৪০-এর দশকে permutation group নিয়ে বিস্তারিত কাজ করেন।
Arthur Cayley ১৮৫৪ সালে permutation-এর বাইরে গিয়ে একটি বিমূর্ত সংজ্ঞার দিকে এগোন: যেকোনো প্রতীকের সেট আর তার ওপর একটি সংযোজনীয় গুণ, যার টেবিল লেখা যায়। আজকের Cayley table তাঁর নামেই। তিনি এটাও দেখান যে প্রতিটি group কোনো permutation group-এর isomorphic (Cayley-এর উপপাদ্য): a-কে “বাঁ থেকে a দিয়ে গুণ” নামের permutation-এ পাঠালে একটি one-to-one homomorphism পাওয়া যায়। ফলে বিমূর্ত সংজ্ঞায় কিছু হারায় না, শুধু ভাষা সাধারণ হয়।
আধুনিক চারটি axiom-এর পরিচ্ছন্ন রূপ উনিশ শতকের শেষ ভাগে এবং বিশ শতকের শুরুতে স্থির হয়। ইতিহাসটি দেখায়, বিমূর্ততা শূন্য থেকে আসেনি; অনেক আলাদা উদাহরণে একই নকশা বারবার দেখে তবেই নাম দেওয়া হয়েছে, ঠিক যেভাবে এই পর্ব ঘড়ি, বর্গ আর mod p থেকে শুরু করেছে।
মূল উপলব্ধি: Group-এর ধারণা সমীকরণের মূলের permutation থেকে জন্মেছে; Lagrange গণনার নিয়ম দেখেছিলেন, Galois গঠনকে সমাধানযোগ্যতার চাবি বানান, আর Cayley বিমূর্ত সংজ্ঞা দেন, যাতে কিছু হারায় না।
প্র ০২Lagrange-এর উল্টোটা কেন মিথ্যা, আর Cauchy ও Sylow সেটি কতটা ফিরিয়ে আনেন?
Lagrange একটি প্রয়োজনীয় শর্ত দেয়: subgroup থাকলে তার আকার ভাজক হবেই। কিন্তু ভাজক হলেই subgroup থাকবে, এমন নিশ্চয়তা নেই। A4 (চতুস্তলকের ঘোরানোর group, আকার 12) সবচেয়ে ছোট পাল্টা-উদাহরণ: 6 ∣ 12, কিন্তু 6 আকারের subgroup নেই। একটি সংক্ষিপ্ত কারণ: A4-এ 3 order-এর উপাদান ৮টি (§৭-এর কোডে S4-এর (3, 1) টাইপ, যারা সবাই জোড়)। 6 আকারের subgroup H থাকলে তার index 2, আর index 2-এর subgroup-এর একটি বিশেষ ধর্ম আছে: প্রতিটি g-এর জন্য g2 ∈ H. 3 order-এর g-তে g = (g2)2, তাই ৮টিই H-এ থাকত, যা 6-এর বেশি। এই যুক্তির কিছু ধাপ (index 2-এর ধর্ম) এখানে প্রমাণ ছাড়া নেওয়া, কিন্তু কোড ব্রুট ফোর্সে একই সিদ্ধান্ত দেয়।
তাহলে কতটা উল্টো সত্য? Cauchy ১৮৪৫ সালের দিকে প্রমাণ করেন: মৌলিক p ∣ |G| হলে G-তে ঠিক p order-এর একটি উপাদান আছে, তাই p আকারের একটি cyclic subgroup-ও আছে। একটি সুন্দর প্রমাণ (J. H. McKay-এর, ১৯৫৯ সালের বলে উল্লেখিত) গণনার: a1a2⋯ap = e মানে এমন p-জোড়গুলো গুনে তাদের ঘোরানোর symmetry-তে ভাগ করা, পর্ব ৫১-এর Burnside-এর মতো ভাবনা।
Ludwig Sylow ১৮৭২ সালে আরও দূর যান: |G| = pkm আর p ∤ m হলে pk আকারের subgroup আছে (Sylow p-subgroup), সবগুলো পরস্পর “conjugate”, আর তাদের সংখ্যা m-কে ভাগ করে ও p দিয়ে ভাগ করলে 1 থাকে। এই গণনার শর্ত থেকে অনেক কিছু বেরিয়ে আসে; যেমন একটি প্রচলিত অনুশীলন দেখায় 15 আকারের প্রতিটি group cyclic.
উল্টোটা কোথায় পুরো সত্য? সব cyclic group-এ, আর আরও সাধারণভাবে সব সসীম abelian group-এ: প্রতিটি ভাজকে subgroup আছে। এমনকি pk আকারের প্রতিটি group-এ প্রতিটি ভাজকে subgroup আছে। তাই প্রশ্নটি পুরোপুরি গঠনের: “কোন group-এ Lagrange-এর উল্টো খাটে” প্রশ্নটি নিজেই গবেষণার বিষয় হয়েছে।
মূল উপলব্ধি: Lagrange শুধু সম্ভাব্য আকার সীমিত করে; মৌলিক ভাজকে Cauchy আর মৌলিক-ঘাতে Sylow অস্তিত্ব দেয়, কিন্তু সাধারণ ভাজকে কোনো নিশ্চয়তা নেই, A4 তার প্রমাণ।
প্র ০৩Diffie–Hellman কেন বড় মৌলিক আকারের subgroup চায়? Lagrange এখানে আক্রমণকারীর হাতিয়ার কীভাবে?
Diffie–Hellman-এ (পর্ব ২৯) দুই পক্ষ একটি group-এর generator g প্রকাশ্যে মেনে নেয়, গোপন a আর b বেছে ga আর gb পাঠায়, আর দুজনেই gab গোনে। নিরাপত্তা নির্ভর করে ga থেকে a বের করা, অর্থাৎ discrete logarithm, কঠিন হওয়ার ওপর। কিন্তু “কঠিন” কথাটি group-এর আকারের ওপর নির্ভর করে, আর এখানেই Lagrange নকশাকারী আর আক্রমণকারী দুজনেরই হাতিয়ার।
ℤp*-এর আকার p − 1. Lagrange বলে প্রতিটি উপাদানের order p − 1-এর একটি ভাজক। ধরুন p − 1 = 2 · 3 · 5 · q, যেখানে q বড়। আক্রমণকারী h = ga-কে (p − 1)/5 ঘাতে তুললে ফলটি 5 আকারের একটি subgroup-এ পড়ে, আর সেখানে a mod 5 মাত্র পাঁচটি চেষ্টায় বের হয়। একইভাবে a mod 2, a mod 3; শেষে CRT (পর্ব ২৩) দিয়ে জোড়া। এটাই Pohlig–Hellman-এর মূল ধারণা: কাজের কঠিনতা আসলে p − 1-এর সবচেয়ে বড় মৌলিক উৎপাদকের ওপর নির্ভর করে, p-এর আকারের ওপর নয়।
তাই বাস্তব নকশা দুটি কাজ করে। প্রথমত, এমন p বেছে নেয় যাতে p − 1-এর একটি খুব বড় মৌলিক উৎপাদক q থাকে (যেমন p = 2q + 1 আকারের safe prime), আর g নেয় q আকারের subgroup-এর generator হিসেবে। ফল ৭.৩ অনুযায়ী মৌলিক আকারের group-এ e ছাড়া প্রতিটি উপাদান generator, তাই কোনো ছোট subgroup-এ “পালানোর” পথ নেই। দ্বিতীয়ত, অপর পক্ষের পাঠানো মান সত্যিই সেই subgroup-এ আছে কি না যাচাই করে, কারণ আক্রমণকারী ইচ্ছা করে ছোট order-এর উপাদান পাঠিয়ে গোপন সংখ্যার টুকরো ফাঁস করাতে পারে; এই ধরনের আক্রমণকে সাধারণত small-subgroup attack বলা হয়।
এই পর্বের ছোট সংখ্যার উদাহরণ শুধু গঠন বোঝার জন্য। বাস্তবে মানসম্মত বড় parameter, প্রমাণিত protocol আর যাচাই-করা library ছাড়া এগুলো ব্যবহার করা বিপজ্জনক; ব্যবহারিক দিক সাইবার সিকিউরিটি কোর্সের পর্ব ১০-এ।
মূল উপলব্ধি: Lagrange order-গুলোকে |G|-এর ভাজকে বেঁধে দেয়; |G|-এর ছোট ভাজক থাকলে discrete log টুকরো টুকরো ভাঙা যায়, তাই নিরাপদ নকশা বড় মৌলিক আকারের subgroup-এ কাজ করে আর প্রাপ্ত মান যাচাই করে।
প্র ০৪Check digit-এ non-abelian group কেন? Verhoeff-এর পদ্ধতি আর abelian group-এর সীমা
একটি check digit পদ্ধতি সাধারণত এভাবে কাজ করে: অঙ্কগুলোকে একটি group-এর উপাদান ধরে, প্রতিটি অবস্থানে একটি নির্দিষ্ট রূপান্তর চালিয়ে সব গুণ করে, আর শেষ অঙ্ক এমনভাবে বাছে যাতে ফল একক হয়। মানুষের সবচেয়ে সাধারণ দুটি ভুল হলো একটি অঙ্ক ভুল লেখা আর পাশাপাশি দুটি অঙ্ক অদলবদল করা (২৩-এর জায়গায় ৩২)।
একক ভুল ধরা সহজ: cancellation (উপপাদ্য ২.২) নিশ্চিত করে যে একটি অবস্থানের উপাদান বদলালে গুণফলও বদলায়। অদলবদল কঠিন। শুধু যোগ করলে (abelian group) a + b = b + a, তাই অদলবদল ধরা পড়ে না। এ জন্য পর্ব ২৬-এর EAN-13 অবস্থানভেদে ওজন 1 আর 3 দেয়; কিন্তু mod 10-এ পাশাপাশি দুটি অঙ্কের পার্থক্য 5 হলে 3a + b আর 3b + a একই ভাগশেষ দেয় (পার্থক্য 2(a − b) = ±10), তাই এমন অদলবদল ফসকে যায়। ISBN-10 এই সমস্যা এড়ায় mod 11 নিয়ে, কিন্তু তখন এগারোতম চিহ্ন “X” লাগে।
J. Verhoeff ১৯৬৯ সালের এক গবেষণায় দশটি অঙ্কের জন্য অন্য পথ নেন বলে বর্ণিত: দশ আকারের non-abelian group D5 (নিয়মিত পঞ্চভুজের symmetry) আর অবস্থান অনুযায়ী একটি নির্দিষ্ট permutation প্রয়োগ। Non-abelian গুণ আর permutation মিলে পাশাপাশি অদলবদলও গুণফল বদলে দেয়। প্রকাশিত বিবরণ অনুযায়ী পদ্ধতিটি সব একক ভুল আর সব পাশাপাশি অদলবদল ধরে; এই পর্ব লেখার সময় একটি বাস্তবায়নে চার অঙ্কের সব payload-এ ব্রুট ফোর্সে তা মিলিয়ে দেখা হয়েছে। পরে H. Michael Damm ২০০৪ সালে একটি quasigroup-ভিত্তিক বিকল্প দেন, যাতে শুধু একটি টেবিল লাগে।
গণিতের দিক থেকে শিক্ষাটি পরিষ্কার: যে ধর্ম (commutativity) সাধারণত সুবিধা, এখানে তা বাধা। কোন ভুল ধরা পড়বে, তা group-এর গঠনই ঠিক করে, আর এই কারণেই check digit-এর তত্ত্ব group তত্ত্বের একটি ছোট কিন্তু বাস্তব প্রয়োগ।
মূল উপলব্ধি: Abelian group-এ অদলবদল গুণফল বদলায় না, তাই শুধু যোগ-ভিত্তিক check digit কিছু অদলবদল ফসকায়; Verhoeff non-abelian D5 আর অবস্থানভেদের permutation দিয়ে দশ অঙ্কেই সব একক ভুল আর পাশাপাশি অদলবদল ধরেন।
প্র ০৫প্রতিটি group কি আসলে permutation? Cayley-এর উপপাদ্য আর Rubik's cube থেকে কী শেখা যায়?
Cayley-এর উপপাদ্য বলে, প্রতিটি group G কোনো permutation group-এর isomorphic. প্রমাণের ধারণা সরল: প্রতিটি a ∈ G-এর জন্য La(x) = ax নিন। Cancellation বলে La one-to-one, আর সসীম G-তে তাই G-এর একটি permutation, ঠিক Cayley table-এর a সারি। Lab = La ∘ Lb, তাই a ↦ La একটি homomorphism, আর La = Lb হলে ae = be, অর্থাৎ a = b. তাই G হুবহু S|G|-এর একটি subgroup-এর মতো।
এর অর্থ দুই রকম। তাত্ত্বিকভাবে, permutation-এর জগৎই group-এর পুরো জগৎ; বিমূর্ত সংজ্ঞায় নতুন কোনো “প্রাণী” আসে না। ব্যবহারিকভাবে, কম্পিউটারে group নিয়ে কাজ করার প্রধান উপায় permutation-এর তালিকা। GAP-এর মতো computer algebra system বড় group-কে কয়েকটি generator permutation দিয়ে রাখে, আর Schreier–Sims-এর মতো algorithm দিয়ে আকার আর সদস্যপদ বের করে, পুরো তালিকা না বানিয়েই।
Rubik's cube এর সবচেয়ে পরিচিত উদাহরণ। কিউবের প্রতিটি ঘোরানো ৪৮টি চলমান রঙিন বর্গের (কেন্দ্র বাদে) একটি permutation; সব বৈধ অবস্থা মিলে একটি group, যার আকার প্রায় 4.3 × 1019. সূত্রটি গণনার: কোণার ৮টি টুকরার 8! বিন্যাস আর 37 মোচড়, কিনারার ১২টির 12! বিন্যাস আর 211 উল্টানো, আর একটি parity শর্তে অর্ধেক। শেষ “শর্তগুলো” (একটি কোণা একা মোচড়ানো যায় না, দুটি টুকরা একা অদলবদল করা যায় না) আসে permutation-এর জোড়-বিজোড়তা থেকে, যা A4-এর সংজ্ঞায় এসেছে।
২০১০ সালে Tomas Rokicki, Herbert Kociemba, Morley Davidson আর John Dethridge বিপুল কম্পিউটার-গণনার সাহায্যে দেখান যে যেকোনো অবস্থা থেকে ২০টি বা তার কম ঘোরানোয় (half-turn metric-এ) সমাধান সম্ভব বলে প্রচারিত, যাকে জনপ্রিয়ভাবে “God's number” বলা হয়। প্রমাণে group-এর coset ব্যবহার করে অবস্থাগুলোকে বড় বড় টুকরোয় ভাগ করে আলাদা আলাদা গোনা হয়েছিল বলে বর্ণনা পাওয়া যায়: Lagrange-এর partition এখানে বাস্তব গণনার কৌশল।
মূল উপলব্ধি: প্রতিটি group একটি permutation group (Cayley), তাই কম্পিউটারে group মানে কয়েকটি generator permutation; Rubik's cube-এর মতো বিশাল group-ও coset-এর ভাগ আর permutation-এর গণনায় বশ মানে।
অনুশীলন
আগে খাতায় করুন, তারপর উত্তর খুলে মেলান।
-
প্রমাণ: একটি group G-এর প্রতিটি উপাদান a-তে a2 = e হলে প্রমাণ করুন G abelian.
- a2 = e মানে aa = e, অর্থাৎ a−1 = a, প্রতিটি a-এর জন্য। — inverse অনন্য
- a, b ∈ G নিন। ab-ও G-তে, তাই (ab)−1 = ab. — ধাপ ১, ab-তে প্রয়োগ
- আবার (ab)−1 = b−1a−1 = ba. — §২-এর সূত্র, ধাপ ১
- দুটি মিলিয়ে ab = ba. ∎
উদাহরণ ℤ8*: সব উপাদানের বর্গ 1, আর group-টি abelian. উল্টোটা সত্য নয়: ℤ4 abelian, কিন্তু 1 + 1 = 2 ≠ 0.
-
গণনা: G = ℤ20*. (ক) G-এর উপাদান আর |G| লিখুন। (খ) প্রতিটির order বের করুন; G কি cyclic? (গ) H = ⟨3⟩ আর তার coset-গুলো লিখুন, Lagrange মিলিয়ে দেখুন।
(ক) 20-এর সঙ্গে সহমৌলিক: 1, 3, 7, 9, 11, 13, 17, 19; |G| = φ(20) = 8. (খ) Order: 1 → 1; 3, 7, 13, 17 → 4 (যেমন 3, 9, 27 ≡ 7, 21 ≡ 1); 9, 11, 19 → 2 (81 ≡ 1, 121 ≡ 1, 361 ≡ 1). সবাই 8-এর ভাজক, কিন্তু কোনো order 8 নয়, তাই G cyclic নয়। (গ) H = ⟨3⟩ = {1, 3, 9, 7}. 11H = {11, 33 ≡ 13, 99 ≡ 19, 77 ≡ 17} = {11, 13, 17, 19}. দুটি coset, প্রতিটির আকার 4: 8 = 2 × 4. সব সংখ্যা scratch-এ Python দিয়ে মেলানো।
-
আউটপুট অনুমান: কোড না চালিয়ে বলুন কী ছাপা হবে, আর দ্বিতীয় লাইনটি গণিতে কী বোঝায়। তারপর যেকোনো Python-এ চালিয়ে মেলান।
from math import gcd n = 10 U = [a for a in range(1, n) if gcd(a, n) == 1] print(U, len(U)) print([a for a in U if len({pow(a, k, n) for k in range(1, len(U) + 1)}) == len(U)])[1, 3, 7, 9] 4 [3, 7]প্রথম লাইন ℤ10* আর তার আকার φ(10) = 4. দ্বিতীয় লাইন সেই a-গুলো, যাদের প্রথম চারটি ঘাত সব আলাদা, অর্থাৎ ord(a) = 4 = |G|: generator. 3-এর ঘাত 3, 9, 27 ≡ 7, 21 ≡ 1; 7-এর 7, 9, 3, 1. তাই ℤ10* cyclic, আর generator φ(4) = 2টি, উপপাদ্য ৮.২ মেনে (CPython 3.14-এ চালিয়ে মেলানো)।
-
প্রমাণের ভুল ধরুন: দাবি: “abelian group-এ ord(ab) = lcm(ord(a), ord(b)).” প্রমাণ: “m = lcm(ord a, ord b) হলে (ab)m = ambm = e · e = e, তাই ord(ab) = m. ∎” ভুল কোথায়? একটি পাল্টা-উদাহরণ দিন।
- ভুল ধাপ: (ab)m = e থেকে শুধু বলা যায় ord(ab) ∣ m (উপপাদ্য ৪.২-এর খ); m-ই সবচেয়ে ছোট এমন ঘাত, তা প্রমাণ হয়নি। প্রমাণটি ভাজককে সমতা বলে ধরে নিয়েছে।
- পাল্টা-উদাহরণ: ℤ12-এ a = 4, b = 8: ord(4) = ord(8) = 3, lcm 3. কিন্তু 4 + 8 = 12 ≡ 0, যার order 1. আরও সরল: b = a−1 নিলে ab = e সবসময়।
- সঠিক কথা: abelian group-এ ord(ab) ∣ lcm(ord a, ord b); আর gcd(ord a, ord b) = 1 হলে সমতা খাটে, তখন ord(ab) = ord(a) · ord(b).
নিজেকে যাচাই করুন
ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।
ক্রমLagrange-এর উপপাদ্য |H| ∣ |G|-এর প্রমাণের ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)
- G-তে সম্পর্ক সংজ্ঞায়িত করুন: a ~ b, যদি a−1b ∈ H
- দেখান ~ reflexive, symmetric আর transitive, অর্থাৎ একটি equivalence relation
- দেখান a-এর equivalence class ঠিক বাম coset aH, তাই coset-গুলো G-এর partition
- h ↦ ah একটি bijection (cancellation), তাই প্রতিটি coset-এর আকার |H|
- সমান আকারের পরস্পর-বিচ্ছিন্ন টুকরো যোগ করে |G| = [G : H] · |H|
ℤ7* (গুণ mod 7)-এ 3-এর order কত?
- 2
- 3
- 6
- 7
(ℤ12, + mod 12)-এ কয়টি উপাদান পুরো group-এর generator?
- 1
- 4
- 6
- 12
15 আকারের একটি group-এর subgroup-এর আকার কোনটি হতে পারে না?
- 3
- 5
- 6
- 15
নিচের কোনটি group নয়?
- (ℤ, +)
- (ℚ \ {0}, ×)
- (ℤ9*, × mod 9)
- (ℤ, −)
ℤ8* = {1, 3, 5, 7} (গুণ mod 8) সম্পর্কে কোন কথাটি সত্য?
- এটি abelian কিন্তু cyclic নয়
- এটি cyclic, generator 3
- এটি non-abelian
- এটি ℤ4-এর isomorphic
20 আকারের group G-এর একটি subgroup H-এর আকার 4. G-তে H-এর কয়টি আলাদা বাম coset?
- 4
- 5
- 20
- 80
শব্দকোষ
লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন, অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:
মনে রাখুন
- Group: closure, সংযোজন নিয়ম, একক আর inverse; একক ও inverse অনন্য, cancellation চলে, Cayley table একটি Latin square.
- Order আর cyclic: am = e ⇔ ord(a) ∣ m; ℤn-এ k generator ⇔ gcd(k, n) = 1, সংখ্যায় φ(n).
- Subgroup test: অশূন্য, গুণ আর inverse-এ বদ্ধ; সসীম হলে শুধু গুণে বদ্ধতাই যথেষ্ট।
- Lagrange: coset সমান আকারের টুকরোয় G-কে ভাগ করে, তাই |H| ∣ |G|; ফলে ord(a) ∣ |G|, a|G| = e, Fermat আর Euler; উল্টোটা সাধারণভাবে মিথ্যা (A4).
- Isomorphism: গঠন-রক্ষাকারী bijection; n আকারের প্রতিটি cyclic group ℤn, মৌলিক আকারের প্রতিটি group cyclic, আর kernel সবসময় subgroup.
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পর্ব ৭১ · Ring আর field — modular ring, polynomial আর GF(2ⁿ)পরবর্তী পর্বদুই অপারেশনের কাঠামো আর polynomial ring.
- পর্ব ২৪ · Fermat-এর ছোট উপপাদ্য আর Euler-এর totientপুনরালোচনাOrder, primitive root আর Lagrange-এর সংখ্যাতাত্ত্বিক রূপ।
- পর্ব ৫১ · Symmetry দিয়ে গণনা — Burnside-এর lemma আর PólyaপুনরালোচনাDihedral group, group action আর orbit–stabilizer.
- পর্ব ২৯ · Discrete logarithm আর Diffie–Hellman key exchangeপ্রয়োগCyclic group-এর ওপর key exchange আর Pohlig–Hellman.
- ডিসক্রিট ম্যাথমেটিক্স · কোর্স হোম৮৩টি পর্বপুরো কোর্সের মানচিত্র আর ১৪টি মডিউল।
- সাইবার সিকিউরিটি · পর্ব ১০ · Public key cryptography — RSA, elliptic curve আর key exchangeবাস্তবে প্রয়োগনিরাপদ parameter, library আর বাস্তবের key exchange.