

*** Modulare Arithmetik ***

mod als Operator: 20 % 7 ergibt 6 und so weiter

In der Mathematik schreiben wir 

20 = 6 (mod 7)

aber auch 

20 = 13 (mod 7)

oder

13 = 7 (mod 2)

heißt: 20 und 13 lassen bei Division durch 7 den gleichen Rest. Daher auch:

13 = -1 (mod 7)

Formale Definition: a = b (mod m) wenn m | (a-b). 
Beobachtung: Vielfache von m sind immer = 0 (mod m). Wenn m | (a-b) dann auch m | (b-a). 

Konzept: man kann modulo m "rechnen". Wenn a = a' (mod m) und b = b' (mod m), dann auch ab = a'b' (mod m) und a+b = a'+b'. Das Restenehmen verträgt sich also mit + und *.

Vorsicht: Exponentiation ist nicht mit mod verträglich. Beispiel:

5^4 = 625 = 1 (mod 3)
2^1 = 2 = 2 (mod 3).

Aber 

2^4 = 16 = 1 (mod 3).

Man kann also die Basis mod m reduzieren, nicht aber den Exponenten. 



Moral: Zahlen mod m verhalten sich also ähnlich wie ganze Zahlen, solange wir nur addieren und multiplizieren.

Wie weit geht die Analogie mit den ganzen Zahlen:

Beobachtung: wenn ab = cb und b != 0, dann gilt a = c. Man kann in den ganzen Zahlen also "kürzen", wenn auch nicht nach Belieben dividieren. 

Geht das mod m? Gilt also "Wenn ab = cb (mod m) und b != 0 (mod m), dann gilt auch a=c (mod m)"?

Leider nein. Gegenbeispiel: 

8 * 6 = 3 (mod 15)
3 * 6 = 3 (mod 15)

Aber 8 != 3 (mod 15). Was also ist schief gegangen? Gehen wir von ab = cb (mod m) aus. Das heißt also 

m | (ab - cb)

m | (a-c)*b

Können wir daraus folgern, dass m | a-c? Offensichtlich nicht! 

a-c = 5
b = 6

15 | 5*6 aber 15 !| 5 

Wenn nun aber m eine Primzahl ist und m | x*y, dann gilt m|x oder m|y (oder beides). 

"Beweis:" Wir schreiben x in seiner Primzahlzerlegung. Wir schreiben y in seiner Primzahlzerlegung. Das gibt uns die Primzahlzerlegung von x*y. Da diese eindeutig ist, muss m darin vorkommen, also bereits in x oder in y. 

Lemma: Die Primzahlzerlegung ist eindeutig.
Beweis: Falls nicht, also m = p_1 * ... * p_k und m = q_1 * ... * q_l, sei m ein kleinstes Gegenbeispiel, also eine kleinste Zahl mit zwei verschiedenen Primzahlzerlegungen. Wir können davon ausgehen, dass p_i != q_j gilt, ansonsten könnten wir kürzen. Wir sehen also:

p_1 | m 

aber 

p_1 teilt nicht q_1 * ... * q_l. Es gibt also ein kleinstes j >= 2, so dass p_1 die Zahl q_1 * ... * q_j teilt. Dann gilt: 

p_1 teilt nicht (q_1 * ... * q_{j-1}), p_1 teilt nicht q_j, aber es teilt deren Produkt. Das kann aber bei Primzahlen nicht der Fall sein:

Lemma: Wenn p eine Primzahl ist und p | x*y, dann gilt p|x oder p|y. 
Beweis: Es gibt Zahlen a und b mit 

pa + bx = 1 (Bezout's identity).

Jetzt nehmen wir beides mal y:

pay + bxy = 1. Da nun xy = kp gilt, schreiben wir 

pay + bpk = b

p(ay + bk) = b 

p teilt die linke Seite, also teilt es die rechte Seite.

Bezout's identity: wenn d = gcd(s,t), dann gibt es a, b mit s*a + t*b = d.

Beweis: Sei s > t. Dann ist d = gcd(s,t) = gcd(s-t,t), also nach Induktion:

(s-t)*a' + t*b' = d .

s*a' - t*a' + t*b' = d 

s*a' * t*(b' - a') = d.

Done. 


*** Wieder zurück zur modularen Arithmetik *** 


Wenn p eine Primzahl ist und 

Beobachtung (Kürzen mod p): 

a*x = b*x (mod p) und x != 0 *mod p), dann gilt a=b (mod p).

Beweis: es gilt p | (ax-bx) = (a-b)*x und p !| x. Daher muss nach Euklids Lemma p | a-b gelten. 


Es gilt sogar noch mehr im Vergleich zu den ganzen Zahlen:

Beobachtung: Sei p eine Primzahl und x != 0 (mod p). Dann gibt es y mit x*y = 1 (mod p), also y = x^{-1} ein "Inverses".

Erster Beweis: Bezouts Identität gibt uns a,b mit x*a + b*p = 1, also x*a = 1 (mod p). Dieses a ist es! Das gibt uns auch gleich einen Algorithmus! 

Zweiter Beweis: wir schreiben p-1 Zahlen auf, nämlich 

x mod p 
2x mod p
3x mod p
...
(p-1)x mod p

wir wenden also immer den "mod p"-Operator an. Keine dieser Zahlen ist 0, weil j*x nicht durch p teilbar ist (wieder Euklids Lemma). Alle Zahlen sind also in {1, ..., p-1}. 

Kommt eine Zahl doppelt vor? Also ix = jx (mod p)? Dann könnten wir ja kürzen und würden erhalten i=j (mod p), was nicht geht, weil 1 <= i < j <= p-1. Alle p-1 Zahlen sind also verschieden und liegen in {1, ..., p-1}, also muss auch 1 irgendwo vorkommen. 


Beobachtung: Wir können mod p addieren, subtrahieren, multiplizieren und dividieren (außer durch 0), nämlich a/b = a*b^{-1}. Die ganzen Zahlen mod p ähneln also eher den rationalen oder reellen Zahlen als den ganzen Zahlen. Es handelt sich um einen *Körper*.

Definition (Körper). Eine Menge k mit Operationen + und * heißt Körper, wenn 

1. + und * sind assoziativ, kommutativ und distributiv. 

2. Es gibt neutrale Elemente 0 und 1 mit a+0 = 0 und a*1 = 1.

3. Es gibt ein additives Inverses, also a + (-a) = 0.

4. Es gibt ein multiplikatives Inverses, also a * a^{-1} = 1 (wenn a != 0).

Wenn Punkt 1,2,3 gelten, nennt man es einen *kommutativen Ring*. Die ganzen Zahlen modulo m bilden einen kommutativen Ring. Wenn m eine Primzahl ist, gilt auch 4, und es ist ein Körper.

Wir schreiben Z_p oder F_p oder GF(p) für diesen Körper. 


*** Exponentiation modulo p *** 

Wir können Exponenten nicht modulo p reduzieren. Gegenbeispiel:

2^6 = 64 = -1 (mod 5)
2^1 = 2 != -1 (mod 5).

Allerdings gilt etwas anderes: sei a != 0 eine Zahl in F_p. 


*** Fermat's little theorem: Für alle a gilt a^{p} = a (mod p).
Beweis: Wenn a=0 sind, dann sind beide Seiten 0. Andernfalls: 

Was ist 1*2*3*...*(p-1) = \prod_{j=1}^{p-1} j? Wir wissen es im allgemeinen nicht.
Was ist nun 

a^{p-1} * (1*2*...*(p-1)) = \prod_{j=1}^{p-1} (aj)   ?

Wir wissen von oben, dass die Zahlen aj alle Zahlen von 1 bis p-1 durchlaufen (in geänderter Reihenfolge, aber jede Zahl kommt genau einmal dran). Daher:


a^{p-1} * (1*2*...*(p-1)) = \prod_{j=1}^{p-1} (aj) = \prod_{j=1}^{p-1} j \ . 

Das Produkt ist nicht 0 mod p (Euklids Lemma wieder), und daher muss a^{p-1} = 1 sein. 


*** Wir können also in einem Ausdruck a^k das k mod p-1 reduzieren (fast; wir dürfen p-1 nicht durch 0 ersetzen, wenn wir a=0 nicht ausschließen können). Wir können aber immer erreichen, dass er Exponent kleiner als p ist. Dies ist wichtig, wenn wir Polynome betrachten:



*** Polynome ***

P = x^3 + 5*x^2 + x - 6 

1. Ein formales Gebilde, Linearkombination endlich vieler Monome x^k 
2. Definiert eine Funktion K -> K. 

K[x]: Polynome über dem Körper K in einer Variablen x. 

Besondere Rolle: das Nullpolynom 0. Beachte: wir fassen Monome immer zusammen, also x^2-x^2+x = x ist ein Polynom vom Grad 1 und x^2-x^2 ist das Nullpolynom. 

Lemma: Ein Polynom P (sagen wir: über den reellen Zahlen), das nicht das Nullpolynom ist, vom Grad d hat höchstens d Nullstellen. 

Beweis: Sei a eine Nullstelle, also P(a) = 0. Ich behaupte, dass (x-a) ein Teiler von P ist, sich P also schreiben lässt als 

P(x) = Q(x) * (x-a).

Wir beweisen dies durch Induktion über den Grad von P. Wenn d=1 ist, dann kann nur P(x) = x-a gelten, und Q(x)=1 (das konstante 1-Polynom) erfüllt die Forderung.

Wenn d >= 2 ist, dann gilt P(x) = c*x^d + R(x), wobei R den Grad höchstens d-1 hat. 

(x-a)*x^{d-1} = x^d - ax^{d-1}, also 

x^d = (x-a)*x^{d-1} + ax^{d-1} und somit gilt 

P(x) = c*x^d + R(x) = c*(x-a)*x^{d-1} + ax^{d-1} + R(x) = c*(x-a)*x^{d-1} + S(x) 

wobei S ein Polynom vom Grad höchstens d-1 ist. Wir setzen nun x=a ein. 

0 = P(a) = c*(a-a)*a^{d-1} + S(a) = S(0), 

also gilt auch S(0) = 0. Nach Induktion gilt S(x) = (x-a) * T(x) und T hat Grad höchstens d-1. Daher:

P(x) = c*(x-a)*x^{d-1} + (x-a) * T(x) = (x-a) * (c*x^{d-1} + T(x)). 

Wir setzen also Q(x) = c*x^{d-1} + T(x). Das hat Grad höchstens d-1 und somit gilt 

P(x) = (x-a) * Q(x). Das Behauptung ist also bewiesen.

Jetzt können wir das iterieren: wenn P(x) k Nullstellen a_1, ..., a_k hat, dann können wir schreiben

P(x) = (x-a_1) * (x-a_2) * ... * (x-a_k) * Q(x) 

wobei Q den Grad d-k hat. Wenn nun also P mindestens d Nullstellen hat, ist der Grad von Q höchstens 0, also konstant. Da P nicht das Nullpolynom ist, ist es Q auch nicht, also hat Q keine weiteren Nullstellen. Das heißt: wenn a \not \in {a_1, \dots, a_d} gilt, dann ist auch 

P(a) != 0.

Wir sehen: wenn P mindestens d Nullstellen hat, kann es keine weiteren haben.


*** Reflektieren wir: wo haben wir ausgenutzt, dass wir über den reellen Zahlen arbeiten? Nirgendwo. Wir haben nur ganz zum Schluss ausgenutzt: wenn Q(a) != 0 und a != a_i, dann gilt 

(a - a_1) * (a - a_2) * ... * (a - a_d) * Q(a) != 0. 

Also: Zahlen, die nicht 0 sind, können sich nicht zu 0 multiplizieren. 

Gilt das auch modulo m?

- Falls m keine Primzahl ist, nein: 6*5 != 0 (mod 15)
- Falls m eine Primzahl ist, ja: Euklids Lemma.

Also:

Lemma: Sei P in F[x] ein Polynom vom Grad d. Dann hat P höchstens d Nullstellen. 




*** Schwartz-Zippel-Lemma *** 

F[x_1,...,x_n] der Ring der Polynome in n Variablen x_1, ..., x_n. 

Ein Monom x_1^{e_1} * ... * x_n^{e_n} hat Grad e_1 + ... + e_n, also x^2*y*z^2 hat Grad 5. Der Grad eines Polynoms ist der Maximalgrad seiner Terme.

Lemma: Sei P in F[x_1,...,x_n] ein Polynom vom Grad d und S \subseteq F eine Menge der Größe s. Dann enthält die Menge S^n höchstens d*s^{n-1} viele Nullstellen von P. 

Probabilistisch ausgedrückt: Pr_{x in S^k} [ P(x) = 0] <= d/s. 

Anmerkung: das ist "tight". Wenn zum Beispiel 

P(x) = x_1 + x_2 + ... + x_n 

gilt, dann hat es genau |F|^{n-1} Nullstellen. 

Beweis: Wenn n=1 ist dann hat P höchstens d Wurzeln in F, also auch in S. Ansonsten: 

Schreibe (x_1, ..., x_n) = (x, \vec{y}) und 

P(x, y) = x^k * P_k(y) + x^{k-1} * P_{k-1}(y) + ... 

Wenn nun (a,b) eine Nullstelle in S ist, dann kann dies auf zwei Arten passieren:

1. P_k(b) = 0 oder
2. P_k(b) != 0. Dann hat P(x, b) Grad genau k und hat somit höchstens k Nullstellen. 

Also:

Pr[ P(a,b) = 0] = Pr[P_k(b)=0 und P(a,b)=0] + Pr[P_k(b)!=0 und P(a,b)=0]
       
               <= Pr[P_k(b)=0] + Pr[P_k(b)!=0 und P(a,b)=0]

Die erste Wahrscheinlichkeit ist nach Induktion höchstens (d-k)/s. 

Die zweite: für jede Wahl von b, bei der P_k(b)!=0 gilt, hat P(x,b) höchstens k Nullstellen, also ist für fixes b die Wahrscheinlichkeit Pr_a [P_k(b) != 0 und P(a,b)=0] <= k/s.

Zusammen: (d-k)/s + k/s = d/s.

Falls Ihnen das Bauchgrimmen verursacht, hier ein Beweis ohne Wahrscheinlichkeiten. 


1. Nach Induktion hat die Menge 

B := {b in S^{k-1} | P_k(b) = 0}

höchstens (d-k) s^{k-2} Elemente. Daher hat die Menge 

W_* := {(a,b) in S^k | P_k(b) = 0}

höchstens (d-k) s^{k-1} Elemente (kombiniere b frei mit irgendeinem a).

2. Wenn nun eine Nullstelle (a,b) von P nicht in W_1 liegt, dann ist P_k(b) != 0 und somit ist a eine Nullstelle von P(x,b). Dieses hat Grad k und somit höchstens k Nullstellen. Formal:

W_b := {a in S | P(a,b) = 0} hat höchstens k Elemente, solange b nicht in B ist. 

Für jedes b in S^{k-1} \ B hat |W_b| <= k. 

Jede Nullstelle von P muss in W_* liegen doer in einem W_b für b \not \in B. Letztere sind höchstens 

(s^{k-1} - (d-k) s^{k-2}) * k <= s^{k-1}*k 

viele. Also gibt es höchstens 

s^{k-1}*k + (d-k) s^{k-1} = d*s^{k-1} 

Nullstellen. 



*** Andere endliche Körper *** 


Für jede Primzahl gibt es einen endlichen Körper. Aber vielleicht wollen wir andere Zahlen? Gibt es einen endlichen Körper mit 8 Elementen?

Betrachten wir F_2 und insbesondere F_2[x]. Wir wollen nun das Polynom x^3+x^2+1 als 0 betrachten, ähnlich wie wir beim mod-7-Rechnen 7 und seine Vielfachen als 0 betrachten. 

f, g, p in F[x]. 

Wir schreiben f=g (mod p) wenn p | f-g gilt (alles sind Polynome in x). 

Beobachtung: f=f' und g=g' impliziert f+g = f'+g' und f*g = f'*g'. Wir können also rechnen. 

Sorge: Kann f*g = 0 (mod p) sein, obwohl f, g != 0? Das geht natürlich, wenn p selbst in kleinere Faktoren zerfällt. Ansonsten?

Definition: p ist *reduzibel* wenn p = ab für deg(a), deg(b) < p. Ansonsten heißt p *irreduzibel*. 

Das hieße: p | f*g aber p!| f und p !| g. 

Definition: Ein Polynom p in F[x] heiße *irreduzibel* wenn man es nicht als p = q_1 * q_2 für Polynome q_1, q_2 vom Grad >= 1 schreiben kann. 

Polynomdivision: Wenn f Grad d hat und g ein Polynom ist, dann kann ich g eindeutig schreiben als 

g = f*q + r 

wobei r Grad kleiner als d hat. 

Beweis: (1) wenn es geht, dann ist es eindeutig. Wenn nämlich 

g = f*q' + r' ist und q=q', dann ist 

0 = f(q-q')  + (r-r') 

nun hat f*(q-q') ein Monom vom Grad mindestens d, und r-r' hat Grad kleiner d, also überlebt dieses Monom und es kann nicht 0 werden. Also muss q=q' gelten und somit dann r=r'. 

(2) Existenz. Wenn deg(g) < deg(f) ist, dann nehme ich q=0 und bin fertig. 

Wenn deg(g) >= d ist, dann sei g(x) = c*x^{k} + ... für. Wähle einen Koeffizienten a so, dass 

a * x^{k-d} * f 

führenden Term c*x^{k} hat. Dann wird dieser führende Term in 

g'(x) := g(x) - a * x^{k-d}*f 

gelöscht, g' hat also Grad höchstens k-1 und lässt sich folglich schreiben als 

g' = f*q' + r mit deg(r) <= d. 

Also: 

g = g' + a*x^{k-d}*f = f* (q' + a*x^{k-d}) + r. 

Das ganze nennt sich Polynomdivision.

Beispiel mit (x^3 + x^2 + 1) : (x^2 + 1). 


Lemma (Bezout). Seien f, g Polynome. Dann gibt es s und t, so dass das Polynom

s*f + t*g 

sowohl f als auch g teilt. 

Beweis: Wie zuvor mit den Primzahlen. Induktion über den Grad. deg(g) > deg(f) sagen wir, und 

g = f*q + r. 

Dann ist deg(r) < deg(f) <= deg(g) und somit gibt es s,t, so dass 

a := s*f + t*r 

sowohl f als auch r teilt. Nun ist g = f*q + r und somit r = g-fq

a = sf + tr = sf + t(g-fq) = sf + tg - tqf = (s-tq)*f + tg 

Dieses a teilt f und r und somit auch fq + r und somit g. QED.


Wenn nun p irreduzibel ist und p !| f, was kann dann 

a  = s*f + t*p 

überhaupt sein? Es teilt p, also p = a*b, das heißt aber, dass eines von a oder b Grad deg(p) hat und das andere Grad 0. Wir können es also so multiplizieren, dass eines p ist und das andere 1. Nun kann a nicht p sein, also muss a 1 sein.

--> es gibt s und t, so dass 

s*f + t*p = 1 gilt. 


Also 

s*f*g + t*p*g = g

Wenn nun also p | f*g dann teilt p die linke Seite, also auch die rechte. Daher:


Lemma: Wenn p irreduzibel ist und p | f*g, dann muss p|f oder p|g. 


Wir können also in F[x] mod p rechnen und uns somit auf Polynome vom Grad deg(p)-1 beschränken. 

Beispiel für F_2[x^3 + x^2 + 1].


Behauptung: x^3 + x^2 + 1 ist irreduzibel. 

Die Polynome vom Grad <= d-1 ergeben also eine Menge von acht Polynomen, und wir können addieren, subtrahieren, multiplizieren. Können wir dividieren? Ja. 

Beweis 1: Wir wollen das inverse von f finden. Schreibe 

s*f + t*p = 1, also gilt p | (sf - 1) und somit ist sf = 1 (mod p). s ist das Inverse von f. 

Beweis 2: ...




*** In F_8[y] rechnen. *** 

Wenn wir jetzt also Polynome über F_8 betrachten, dann müssen Sie folgendes bedenken:

- die Koeffizienten sind Elemente in F_8. Diese haben wir konstruiert, indem wir Polynome in F_2[x] modulo einem bestimmten irreduziblen Polynom genommen haben. Jetzt sollten wir davon aber abstrahieren und sie einfach als irgendwelche beliebig bezeichneten Elemente betrachten. 
























 
























