Seventh Lecture -- Homomorphisms
Friday, October 13
Homomorphism
There is an important extension of the notion of function for some set
A to a set B, if both sets have some structure (for example there
are binary operations in both sets). A homomorphism is a function that
preserves the structure (we cannot do justice to the concept here. A course
in Algebra would.)
More precisely, let * be a binary operation in A, and @ be a binary
operation in B. Then h is a homomorphism from A to B, if
for every a,b in A, h(a*b)=h(a)@h(b).
Examples
- Let A be R+, the positive real numbers with the operation *
(times), and let B the set of reals with the operation +. The the
function log is a homomorphism, as
log(a*b) = loga + logb
(We did not specify the basis of the logarithms. Will every basis yield a
homomorphism?)
Note that log(1)=0, and that for every a, a*1=a, and a+0=a.
This is not a coincidence!
-
Z be the set of integers, and let Z9 be the integers
modulo 9 (the elements of Z9 are 0, 1, 2, ... 8, and addition and
multiplication are done mod 9).
Then the function h(x)= x mod 9
is a homomorphism from Z to Z9 that preserves both addition and multiplication.
It is clear from the second example that homomorphisms do not have to be 1-1.
Exercise.
You do not have to hand these in.
- Prove the "casting out nines" rule for checking multiplication:
given a purported equality a*b=c in Z, obtain a', b' and c' from
a, b, and c respectively, by taking the digits of the number, adding them,
and subtracting 9 from the result whenever it is greater or equal to 9.
Now compute d=a'*b', and obtain d' similarly from d. If the equality is
correct, we wil have d'=c'.
- If c is chosen uniformly at random, what is the probability that c'=d'?
Homomorphisms in Formal Langage Theory
In our case, the relevant algebraic structure is given by the
string concatenation operation. So given two alphabets SIGMA and GAMMA,
h is a homomorphism form SIGMA* to GAMMA* if for all x,y in SIGMA*,
h(xy)=h(x)h(y)
As usual, we denote concatenation by concatenatig the strings.
Note that h(EPSILON)=EPSILON, where EPSILON is the empty string.
This is necessarily the case, since for every string x, xEPSILON=x,
so h(xEPSILON)=h(x)h(EPSILON)=h(x). But EPSILON is the only string with this
property (since length(h(x)h(EPSILON))= length(h(x))+length(h(EPSILON))=
length(h(x)),
so length(h(EPSILON))=0, and EPSILON is the only string of length 0.
Exercise.
Prove that if h is a homomorphism from A to B, with binary operations * and @
respectively, and if A has an element a such that
for all x in A a*x=x*a=x, then B must have an element b such that
for all y in B b@y=y@b=y, and h(a)=b.
Theorems
Regular languages are closed under homomorphisms and inverse homomorphisms.
Refer to Kozen for precise statements and proofs.
Uses
Slick proofs of many theorems. There are examples in Kozen.