שינויים

קפיצה אל: ניווט, חיפוש

מבנים אלגבריים למדעי המחשב - ארז שיינר

נוספו 2,916 בתים, 08:48, 25 באוקטובר 2020
/* הרצאה 3 חבורת תמורות, סימן התמורה; פרק 5 מהספר */
[[89-214 תשעח סמסטר א|חזרה לדף הקורסקטגוריה:מערכי לימוד]]
=ספר הקורס=
*[[מדיה:17ASTestB.pdf|מבחן מועד ב' תשע"ח]]
*[[מדיה:17ASTestC.pdf|מבחן מועד ג' תשע"ח]]
*[[מדיה:18ASTestA.pdf|מבחן מועד א' תשע"ט]]
**[[מדיה:18ASTestASol.pdf|פתרון מועד א' תשע"ט]]
*[[מדיה:19ASTestB.pdf|מבחן מועד ב' תשע"ט]]
**[[מדיה:18ASTestBSol.pdf|פתרון מועד ב' תשע"ט]]
=נושאי ההרצאות=
 
[https://www.youtube.com/playlist?list=PLzSjdxrZD_hka_9hBlLKybpwG_5_T7FaY פלייליסט של הרצאות קבוצה 01 תשפ"א]
 
 
[https://www.youtube.com/playlist?list=PLzSjdxrZD_hlVTrX-RcrpYiTMyQBmIihV פלייליסט של הרצאות קבוצה 02 תשפ"א]
 
 
==הרצאה 1 הקדמה; הסבר על קידוד והצפנה, מבוא למבנים אלגבריים ==
**כיוון שg חח"ע ועל,אוסף הזוגות <math>i\neq j</math> שווה לאוסף הזוגות <math>g(i),g(j)</math>, ולכן <math>\Pi_{i\neq j}\frac{x_{f(g(i))}-x_{f(g(j))}}{x_{g(i)}-x_{g(j)}}=\mathrm{sign}(f)</math>.
**סה"כ קיבלנו <math>\mathrm{sign}(f\circ g)=\mathrm{sign}(f)\cdot\mathrm{sign}(g)</math>.
 
 
<videoflash>Lmk0izbQR08</videoflash>
**<math>f=\begin{pmatrix}1&2&3&4&5&6&7\\4&2&5&3&1&7&6\end{pmatrix}=(1\ 4\ 3\ 5)(6\ 7)</math>.
**לכן <math>\mathrm{sign}(f)=(-1)\cdot(-1)=1</math>, כלומר מדובר בתמורה זוגית.
 
 
<videoflash>oXntZnnoHfM</videoflash>
==הרצאה 4 הומומורפיזמים, איזומורפיזמים, משפט קיילי, משפט לגראנג'; פרקים 9 ו6 מ[http://abstract.ups.edu/aata/ הספר] ==
===משפט לגראנג'===
*תהי חבורה G ותת חבורה H. יהי <math>a\in G</math>, נגדיר את '''המחלקה''' <math>a\cdot H:=\{a+\cdot h:h\in H\}</math>.
*אלה הן למעשה מחלקות השקילות של היחס <math>aRb\iff a^{-1}b\in H</math>
**הוכחה שמדובר ביחס שקילות:
***לכן <math>q_1-q_2=0</math> כלומר <math>q_1=q_2</math> ולכן גם <math>r_1=r_2</math>.
*המספר q נקרא '''מנת''' החלוקה והמספר r נקרא '''שארית''' החלוקה.
*יהיו שני טבעיים שלמים <math>a,b</math> ויהיו <math>r_a,r_b</math> השאריות שלהם בחלוקה בn. אזי <math>ab\equiv r_ar_b \mod n</math>
**<math>ab=(q_an+r_a)(q_bn+r_b)=(q_aq_bn+r_aq_b+q_ar_b)n+r_ar_b</math>
*מסקנה: באותם תנאים, לכל k טבעי מתקיים כי <math>a^k\equiv r_a^k \mod n</math>.
===המחלק המשותף הגדול ביותר===
*לכל שני מספרים טבעיים <math>k<n</math> מתקיים כי <math>gcd(n,k)=gcd(n-k,k)</math>
**נוכיח שכל מספר שמחלק את <math>n,k</math> מחלק גם את <math>n-k,k</math> וההפך, ולכן הגדול ביותר הוא אותו האחד.
**אם <math>a</math> מחלק את <math>n,k</math> אזי <math>n=qa,k=ta</math>, לכן <math>n-k=(q-t)a</math>.
**אם <math>a</math> מחלק את <math>n-k,k</math> אזי <math>n-k=qa,k=ta</math> ולכן <math>n=(q+t)a</math>.
*לכל שני מספריים טבעיים <math>n,k</math> קיימים מספרים שלמים <math>a,b</math> כך ש <math>an+bk=gcd(n,k)</math>
**עבור <math>n=k=1</math> מתקיים כי <math>1\cdot 1 + 0\cdot 1 = 1 = gcd(הוכחה באינדוקציה על הגודל של 1,1)</math>.**נניח שהטענה נכונה לכל <math>n+k<m</math> נוכיח שהיא נכונה עבור <math>n+k=m</math>. **אם <math>n=k סיימנו</math> אזי <math>1\cdot n + 0\cdot k = n =gcd(n, n)=gcd(n,k)</math>.**אחרת , אם <math>n>k<n</math> אזי מתקיים כי <math>gcd(n,k)=gcd(n-k,k)=a(n-k)+bk=an+(b-a)k</math>).**שימו לב שהנחת האינדוקציה התקיימה עבור הזוג <math>n-k,k</math>. 
*שני מספרים טבעיים n,k נקראים '''זרים''' אם <math>gcd(n,k)=1</math>
*ב<math>\mathbb{Z}_n</math> עם פעולת הכפל מודולו n האיברים ההפיכים הם בדיוק המספרים הזרים ל n.
**נניח <math>k\in\mathbb{Z}_n</math> אינו זר לn, כלומר <math>gcd(n,k)=a>1</math>.
***לכן <math>n=qa,k=ta</math> לכן <math>qk=tn</math> ולכן <math>qk=0\in\mathbb{Z}_n</math> כלומר k מחלק אפס ואינו הפיך.
**נניח <math>k\in\mathbb{Z}_n</math> זר לn כלומר <math>gcd(n,k)=1</math>.
***לכן קיימים שלמים כך ש <math>an+bk=1</math> לכן <math>b\cdot k \equiv 1 \mod n</math>.
*עבור מספר טבעי <math>1<n</math> קבוצת המספרים הטבעיים הזרים לn וקטנים ממנו מהווה חבורה ביחס לכפל מודולו n, היא נקראית '''חבורת אוילר''' ומסומנת <math>U_n</math>.
**הוכחה ש<math>U_n</math> חבורה:
**סגירות: מכפלת הפיכים היא הפיכה.
**אסוציאטיביות: נובע מהאסוציאטיביות של הכפל.
**איבר נייטרלי: 1.
**הפיכים: ברור מההגדרה.
*<math>\mathbb{Z}_n</math> עם פעולות חיבור וכפל מודולו n הוא שדה אם ורק אם n הינו מספר ראשוני.
**אכן, כל המספרים החיוביים הקטנים מn הפיכים אם"ם כולם זרים לו אם"ם הוא ראשוני.
===פונקצית אוילר, משפט אוילר והמשפט הקטן של פרמה===
*פונקצית אוילר <math>\phi(n)</math> היא מספר המספרים הטבעיים שקטנים או שווים לn וזרים לו.
*'''משפט אוילר''' - יהיו שני מספרים טבעיים '''זרים''' <math>a<n</math>. אזי <math>a^{\phi(n)}\equiv 1</math> מודולו n.
**עבור <math>n>1</math>, מתקיים כי <math>a\in U_n</math> וגם <math>|U_n|=\phi(n)</math>.
**הסדר של איבר בחבורה סופית חייב לחלק את סדר החבורה, נסמן <math>o(a)=k</math> ולכן <math>\phi(n)=t\cdot k</math>.
**לכן <math>a^{\phi(n)} = (a^k)^t=1</math> כאשר הכפל נעשה ב<math>U_n</math>.
*'''המשפט הקטן של פרמה''' - יהי p ראשוני ומספר טבעי <math>a<p</math> אזי <math>a^{p-1}\equiv 1</math> מודולו p.
**זו מסקנה ישירה ממשפט אוילר (אמנם למעשה אוילר הוא הכללה של פרמה), כיוון ש <math>\phi(p)=p-1</math>.
*בפרט, בתנאי המשפט, <math>a^p\equiv a</math> מודולו p.
**למעשה התוצאה תקיפה לכל מספר טבעי <math>a^p\equiv a</math>, מודולו p נכון לכל ראשוני p ולכל טבעי a. **כיוון ש שאם a זר לp מתקיים כי גם השארית <math>r_a</math> זרה ל <math>p</math> ולכן <math>a^{\phi(n)p-1}\equiv rr_a^{\phi(n)p-1} \mod nequiv 1</math>מודולו p.**אם a אינו זר לp אזי הוא חייב להתחלק בראשוני p, וגם השארית ולכן <math>r</math> זרה ל <math>na^p\equiv a \equiv 0</math>מודולו p.
==הרצאה 6 הצפנה סימטרית (מפתח פרטי), הצפנה אסימטרית (מפתח ציבורי), RSA; פרק 7 מ[http://abstract.ups.edu/aata/ הספר]==
*הצפנה; העברת מידע בערוץ פומבי כך שרק המשתתפים בהצפנה יוכלו להבין אותו, הוכחה לזהות כותב המידע (בין היתר כותב המידע לא יוכל להתנער ממנו), הוכחה לאמינות ושלימות המידע (המידע אינו חלקי ואף אחד לא שינה אותו).*[https://he.wikipedia.org/wiki/%D7%A6%D7%95%D7%A4%D7%9F_%D7%A1%D7%99%D7%9E%D7%98%D7%A8%D7%99 הצפנה סימטרית] - הצפנה בה לשני הצדדים יש סוד משותף שהעבירו מראש בערוץ שאינו פומבי (משאית ברינקס למשל, לנסוע לחנות לאסוף כרטיס sim).
*[https://he.wikipedia.org/wiki/%D7%9E%D7%A4%D7%AA%D7%97_%D7%A6%D7%99%D7%91%D7%95%D7%A8%D7%99 הצפנה פומבית] - הצפנה ללא סוד מתואם מראש, באמצעות מפתחות פומביים (שכולם רואים).
*[https://en.wikipedia.org/wiki/Transport_Layer_Security פרקטית] הצדדים מעבירים מפתח סודי באמצעות הצפנה פומבית, ואז עוברים להצפנה סימטרית.
*טענה: אם <math>p</math> ראשוני, ו<math>x\in U_p</math> איבר כך ש <math>x^2=1</math> אזי <math>x=\pm 1</math>
*הוכחה:
**נזכור ש<math>U_p\mathbb{Z}_p</math> הוא '''שדה''' כיוון שמדובר במספר ראשוני, ולכן אין בו ב<math>U_p=\mathbb{Z}/\{0\}</math> מחלקי אפס.
**<math>x^2=1</math> אם"ם <math>(x-1)(x+1)=0</math> אם"ם <math>x=\pm 1</math>
*הגדרה:
**בהנתן מספר n, ונסמן <math>n-1=2^s\cdot r</math> עבור r אי זוגי. אומרים שהמספר <math>1\leq a <n</math> הוא '''עד חזק''' לראשוניות של n אם אחד מהתנאים הבאים מתקיים:
***<math>a^r\equiv 1 \mod n</math>
***<math>a^{2^kr}\equiv n-1 \mod n</math> עבור <math>1\leq k \leq s-1</math>.
*בהנתן מספר שימו לב: <math>p</math> נתאר מבחן '''הסתברותי''' הבודק האם הוא ראשוני**נבחר מספר <math>1<a<p</math>.**אם <math>a,p</math> אינם זרים, אז <math>p</math> אינו ראשוני '''בוודאות''' וסיימנו.**אחרת, לפי משפט פרמה הקטן <math>a^{pn-1}\equiv 1 \mod p</math>.**המספר <math>p-1</math> הוא זוגי (ביננו, אף אחד לא יבדוק האם <math>p=2</math> ראשוני).**נחלק את <math>p-1</math> ב2 שוב ושוב עד שנגיע למספר אי זוגי r ולכן <math>p-1=2^s\cdot r</math>**כעת נביט במספר <math>a^r \mod p</math>, ידוע שאם נעלה אותו בריבוע s פעמים נקבל 1 (אם p ראשוני כמובן).**כלומר אם נעלה אותו בריבוע שוב ושוב נקבל את סדרת המספרים <math>a^r,a^{2r},a^{4r},...,a^{2^s\cdot r}</math> (מוד p כמובן).**אם אחד האיברים בסדרה אינו <math>\pm 1</math> והבא אחריה הוא כן 1, סימן ש<math>p</math> אינו ראשוני '''בוודאות''' וסיימנו.**אם אף אחד מהחזקות אינה 1 סימן ש<math>p</math> אינו ראשוני '''בוודאות''' וסיימנו.**אחרת <math>a</math> הינו '''עד חזק''' לראשוניות של <math>pn</math>.
  *אם <math>p</math> ראשוני אזי כל המספרים <math>1<a<p</math> הם עדים חזקים לכך.**הוכחה:***לפי אוילר <math>a^{p-1}\equiv 1 \mod p</math> .***אם נעלה את <math>a^r</math> בריבוע s פעמים נקבל <math>a^{2^s\cdot r}=a^{p-1}\equiv 1 \mod p</math>.***לכן אם <math>a^r\not \equiv 1 \mod p</math>, בשלב כלשהו נעלה מספר שאינו 1 בריבוע ונקבל 1, לכן מספר זה חייב להיות <math>-1</math>.
*אם <math>p</math> אינו ראשוני, ידוע שלכל היותר רבע מבין המספרים <math>a</math> יכולים להיות עדים חזקים.
*לכן הסיכוי שמצאנו עד חזק למרות שהמספר שאנו בודקים אינו ראשוני הוא רבע.
*אליס ובוב מתאמים מספר ראשוני גדול <math>p</math> שאינו סודי כמובן.
*כמו כן הם מתאמים יוצר <math>g</math> של <math>U_p</math> (כלומר <math>U_p=<g></math>), או לפחות איבר מסדר מאד גדול(בהמשך יש הסבר כיצד אפשר לעשות זאת).
*כעת אליס בוחרת מספר אקראי סודי <math>a\leq p-1</math> ושולחת לבוב את <math>g^a \mod p</math>.
*בוב בוחר מספר אקראי סודי <math>b\leq p-1</math> ושולח לאליס את <math>g^b \mod p</math>.
**נבחר את p להיות מספר ראשוני "בטוח", כלומר <math>p=2q+1</math> כאשר <math>q</math> ראשוני.
**כעת ב<math>|U_p|=2q</math> ולכן הסדר של כל איבר ב<math>U_p</math> הוא אחד מבין <math>1,2,q,2q</math>.
**נגריל איבר <math>g\neq \pm 1</math> כך ש(לכן <math>g^2\not\equiv 1 \mod p</math> ) וגם <math>g^q\not\equiv 1 \mod p</math>.
**האיבר שבחרנו הוא יוצר.
*סיפרנו על אליס שייצרה מפתח פומבי <math>(n,e)</math>, ושמרה לעצמה את הערכים הסודיים <math>m,d</math>
*כעת בוב שרוצה לשלוח לה מידע ולהבטיח אליס רוצה להבטיח את זהותו זהותה ואת אמינות המידע, מייצר באופן דומה מפתח פומבי <math>(n',e')</math> ושומר ערכים סודיים <math>m',d'</math>*בוב מעביר היא מעבירה את המידע שלו שלה דרך פונקצית גיבוב ומקבל ומקבלת את הערך המגובב <math>a</math>.*בוב מחשב אליס מחשבת את <math>y=a^{d'} \mod n'</math> ושולח לאליס ושולחת אותו בנוסף למידע.*אפילו בהנתן <math>a</math> לא ניתן לחשב את <math>d'</math> (זו בעיית הלוגריתם הדיסקרטי).*אף אחד אחר לא יכול לחשב את y כיוון ש <math>d'</math> סודי.
*כעת אליס מחשבת בוב שרוצה לוודא את אמינות המידע מחשב את <math>a=y^{e'} \mod n'</math> ומוודאת ומוודא כי המידע שהיא קיבלה שהוא קיבל הוא המידע שבוב התכוון שאליס התכוונה לשלוח עד כדי המקרה הבלתי סביר של התנגשות.*אף אחד אחר לא יכל ליצור את הוכחת אמינות המידע הזו פרט לבובלאליס.
**<math>x^{41}=\left(\left(\left(\left(x^2\right)^2\right)^2\right)^2\right)^2\cdot \left(\left(x^2\right)^2\right)^2 \cdot x</math>
**סה"כ חישבנו את החזקה עם 8 העלאות בריבוע, ושלוש הכפלות, במקום 40 הכפלות.
 
==הרצאה 8 תת חבורות נורמליות, חבורות מנה, גרעין; פרקים 10,11 מ[http://abstract.ups.edu/aata/ הספר]==
==הרצאה 9 משפט האיזומורפיזם, מבוא לקידוד; פרק 11 מ[http://abstract.ups.edu/aata/ הספר]==
*'''משפט האיזומורפיזם הראשון'''. יהי <math>\varphi:G\to H</math> איזומורפיזם הומומורפיזם בין חבורות. אזי <math>G/\ker(\varphi)\cong im(\varphi) </math>
*הוכחה:
**לצורך הנוחות נסמן <math>K=\ker(\varphi)</math> ו<math>M=im(\varphi)</math>.
**<math>a_ix_i+a_jx_j-a_ix_j-a_jx_i=(a_i-a_j)(x_i-x_j)\neq 0</math>.
*שימו לב שקוד זה מוגבל במספר הספרות, ואכן כשהוסיפו ספרות שינו אותו באופן דומה במידה מסוימת לתעודת הזהות שנלמד בהמשך.
 
==הרצאה 10 קידוד; פרק 8 מ[http://abstract.ups.edu/aata/ הספר]==
*נקבע פולינום <math>g(x)\in\mathbb{Z}_2[x]</math> כלשהו מדרגה nm.*עבור מידע <math>f(x)</math> נבצע חלוקה עם שארית של <math>x^m\cdot f(x)</math> ב<math>g(x)</math>*<math>x^m\cdot f(x^n ) =q(x)g(x)+r(x)</math>.*המילה שנשלח היא <math>f(x)^m\cdot f(x^n ) + r(x)</math> (שימו לב כי <math>r(x)=-r(x)</math>).
*המילה תקינה אם ורק אם היא מתחלקת ב<math>g(x)</math>.
*זהו קוד לינארי:
**אם <math>f(x),h(x)</math> מתאימים לוקטורי מידע, <math>f(x)=q_1(x)g(x)+r_1(x)</math> ו<math>h(x)=q_2(x)g(x)+r_2(x)</math> אז השארית של <math>f(x)+h(x)</math> היא <math>r_1(x)+r_2(x)</math>.
*קוד זה מוסיף n m ביטים של יתירות למידע.
**נקודד מידע:
***נניח כי המידע שלנו הוא <math>1010</math> כלומר הפולינום <math>f(x)=x^3+x</math>.
***לכן עלינו לחלק את הפולינום <math>f(x)^3\cdot f(x^3) =x^6+x^4</math> בפולינום <math>g(x)=x^3+x+1</math>.
***לאחר אלגוריתם חלוקה עם שארית נקבל <math>x^6+x^4=(x^3+1)(x^3+x+1)+x+1</math>.
***לכן סה"כ המידע שנשלח הוא <math>f(x)^3\cdot f(x^3 ) + r(x)=x^6+x^4+x+1</math> שזה בעצם <math>1010011</math>.
**נבדוק תקינות מידע:
***האם המידע <math>1101101</math> תקין?
==הרצאה 13 קודים ציקליים; פרק 22 מ[http://abstract.ups.edu/aata/ הספר]==
===קידוד פולינומי ציקלי===*עבור הקידוד הציקלי נקבע את הפרמטרים הבאים:*נביט ב<math>R</math> חוג הפולינומים *יהי k אורך המידע, כלומר נקודד פולינומים עד דרגה <math>nk-1</math>בלבד.**יהי g פולינום מדרגה m, עם מקדמים מ<math>\mathbb{Z}_2</math>, יחד עם פעולת החיבור הרגילה, ופעולת הכפל מודולו הפולינום <math>x^n-1</math>לפי נקודד קידוד פולינומי.*נשים לב כי מתקיים *נסמן את אורך המילה המקודדת ב<math>x\cdot(a_{n-1}x^{n-1}+...+a_1x+a_0)=a_{n-2}x^{n-1}k+...+a_1x^2+a_0x+a_{n-1}m</math>.
*קוד נקרא ציקלי אם לכל מילה חוקית <math>(a_{n-1}\ a_{n-2}\ \cdots\ a_1\ a_0)</math> גם המילה ההזזה הציקלית <math>(a_{n-2}\ a_{n-3}\ \cdots\ a_0\ a_{n-1})</math> היא מילה חוקית.
*נקבע פולינום <math>g(x)</math> בעל דרגה <math>\deg(g(x))=n-k>1</math>.*נקודד נתאר את כל פולינומי המידע מדרגה שקטנה או שווה <math>k-1</math> בקידוד פולינומיההזה הציקלית באמצעות פעולה אלגברית.*שימו לב: כיוון ש*יהי <math>\deg (f(x)\cdot x^=a_{n-k1})\leq n-1</math> החלוקה בשארית כוללת אך ורק פולינומים מ<math>R</math>.  *טענה: הפולינום <math>g(x)</math> מחלק את <math>x^{n-1</math> אם ורק אם הקוד לעיל הינו ציקלי}+.*הוכחה:*בכיוון ראשון, נניח כי הקוד הינו ציקלי:**ראשית, נוכיח כי קבוצת המילים החוקיות <math>I</math> היא אידיאל של <math>R</math>.***תהי <math>f(x)\in I</math> מילה חוקית. כיוון שהקוד ציקלי גם <math>x\cdot f(x)\in I+a_0</math>.***באופן דומה, לכל <math>k</math> מתקיים כי אזי <math>x^k\cdot f(x)\in I</math>.***כיוון שהקוד לינארי, גם סכום של מילים חוקיות הוא מילה חוקית.***ביחד, <math>equiv a_{n-12}x^{n-1}f(x)+...+a_1xf(x)a_0x+a_0f(a_{n-1} \mod x)^n-1</math> הינה מילה חוקית.***לכן לכל פולינום כלומר ההזזה הציקלית של <math>hf(x)\in R</math> מתקיים היא השארית של <math>h(x)\cdot f(x)\in I</math>, כלומר אוסף המילים החוקיות הינו אידיאל.**כעת נבצע חילוק בשארית (בחוג הפולינומים הרגיל) בחלוקה ב<math>x^n-1=q(x)g(x)+r(x)</math>.**לכן ב<math>R</math> מתקיים כי <math>q(x)g(x)=r(x)</math> ולכן <math>r(x)\in I</math> (כיוון שמדובר באידיאל).הוכחה:**כלומר קיבלנו מילה חוקית *אכן <math>\deg(r(x))<\deg(g(x))</math> ולכן <math>rcdot f(x)=0</math>.  *בכיוון השני, נניח כי <math>x^a_{n-1=t(}x)g(x)</math> ונוכיח כי מדובר בקוד ציקלי^n+..**נוכיח כי לכל מילה חוקית <math>h(x)g(x)\in I</math> גם <math>xh(x)g(x)\in I</math> כאשר הכפל האחרון נעשה ב<math>R</math>.**נבצע חלוקה עם שארית <math>xh(x)+a_0x=q(x)ta_{n-1}(x^n-1)+r(x)</math> בחוג הפולינומים הרגיל.**נכפול את שני הצדדים ב<math>g(x)</math> ונקבל <math>xh(x)g(x)=q(x)(a_{n-1} + a_{n-2}x^{n-1)}+r(x)g(x)</math>.**לכן ב<math>R..+a_0x</math> מתקיים כי <math>xh(x)g(x)=r(x)g(x)</math>, ואכן <math>r(x)g(x)\in I</math>, כיוון ש<math>\deg(r(x)g(x))<n</math>. 
*משפט: הפולינום <math>g(x)</math> מחלק את <math>x^n-1</math> אם ורק אם הקוד הפולינומי הינו ציקלי.
**הוכחה:
**ראשית נסמן ב<math>I</math> את אוסף כל המילים החוקיות, כלומר כל הפולינומים מהצורה <math>f(x)g(x)</math> כאשר <math>\deg(f)<k</math>.
**כעת, בכיוון ראשון, נניח כי הקוד הינו ציקלי:
***נחלק את <math>x^n-1</math> ב<math>g(x)</math> עם שארית, ונוכיח כי השארית היא אפס.
***<math>x^n-1=h(x)g(x)+r(x)</math>
***שימו לב ש<math>h(x)g(x)\not\in I</math> כיוון ש<math>\deg(h)=k</math>.
***נסמן <math>h(x)=x^k+t(x)</math> ולכן <math>h(x)g(x)=x^kg(x)+t(x)g(x)</math>.
***כעת <math>x^kg(x) = x\cdot x^{k-1}g(x)</math>.
***נחשב את השארית מודולו <math>x^n-1</math> ונקבל ההזזה ציקלית של המילה החוקית <math>x^{k-1}g(x)\in I</math>.
***כיוון שהקוד ציקלי, גם המילה המוזזת הינה חוקית, ולכן <math>x^kg(x)\equiv q(x)g(x) \mod x^n-1</math>.
***נחזור לחלוקה בשארית המקורית, נחשב את השאריות מודולו <math>x^n-1</math> ונקבל:
****<math>0=q(x)g(x)+t(x)g(x)+r(x)</math>
****<math>r(x)=(q(x)+t(x))g(x)</math>
***כיוון ש <math>\deg(r)<\deg(g)</math> נובע כי <math>r(x)=0</math>.
**בכיוון השני, נניח כי <math>x^n-1=t(x)g(x)</math> ונוכיח כי מדובר בקוד ציקלי.
***נוכיח כי לכל מילה חוקית <math>h(x)g(x)\in I</math> גם השארית <math>xh(x)g(x) \mod x^n-1</math> היא מילה חוקית.
***נבצע חלוקה עם שארית של <math>x\cdot h(x)</math> ב<math>t(x)</math>.
***<math>xh(x)=q(x)t(x)+r(x)</math>
***כיוון ש<math>\deg(t)=k</math>, מתקיים כי <math>\deg(r)<k</math>, ולכן <math>r(x)g(x)\in I</math>.
***נכפול את שני הצדדים ב<math>g(x)</math> ונקבל <math>xh(x)g(x)=q(x)(x^n-1)+r(x)g(x)</math>.
***לכן אכן השארית של <math>xh(x)g(x)</math> מודולו <math>x^n-1</math> היא מילה חוקית.
*טענהמשפט: קוד פולינומי ציקלי עם פולינום <math>g(x)</math> מדרגה <math>m</math> מסוגל לזהות כל כמות של שגיאות, בתנאי שכולן נמצאות בתוך טווח של <math>m</math> ביטים.
*הוכחה:
**נניח שקרו טעויות בתוך טווח של <math>m</math> ביטים.
**אם המילה החדשה חוקית, גם כל הזזה ציקלית שלה היא חוקית.
**נזיז את <math>m</math> הביטים כך שיהיה שיהיו בקצה הימני במקום של היתירות.
**כיוון שהיתירות היא יחידה, בוודאות המילה אינה חוקית, סתירה.