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

  1. 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!
  2. 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.

  1. 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'.
  2. 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.